To do what you want I suggest writing a function within each base class of actor you want to save. This function when called will copy all necessary variables (actor class, transform, lifespan, resource type, resource level/amount etc) into a struct and it will pass this info to a global blueprint like the game instance. Then allow your game instance to take all structs from all the actor types you wished to save, put it into a giant array and save that array out. When you load up your game, call a function that takes the saved array of all this data, opens each struct up, spawns in the actor class and then sets its member variables. I would make all your structs the same type and when you spawn each base class in, expose the struct variable on spawn so you can pass all the data through to the spawned actor. Then have the spawned actor set its individual variables from the given struct on begin play.