Hey, Generaleivan1996, sorry, but I never saw this reply until today!
I’m not sure if you’ve found a solution or not, but I’ve been looking into it myself and I’ve made something that works, though it does need to be made a little more sophisticated, but I’ll cover that later.
[This][1] is one of the main sources I used.
So, I created a base actor from which items which will be saved and loaded are derived (using “CreateChildBlueprintClass”) and did this in the event graph:
Then, make a LevelDatabase class. Every level should contain one instance of this class.
Here is its blueprint: Item Database Class posted by GreyWacke | blueprintUE | PasteBin For Unreal Engine 4
So, what happens is the Database finds all instances of the item class in the level, and uses an array of bools, stored in a SaveGame to check the state of each item; disabling them where applicable.
When saving, the database refills the array with the new values of the items.
Now, this system DOES work, however it’s rather crude, in my opinion.
My suggestion would be to store this information in a single SaveGame instance, which would be loaded up and stored the the GameInstance. From there, the database (or even a level blueprint) could gain access to the information.
Perhaps a LevelData struct could be used to hold this information, and each level would have its own LevelData. This could even include information such as Gems remaining, high scores etc.
Then, when the level is loaded, it would ask the game instance for its own LevelData and perform the necessary actions.
I would like to give this a go myself at some point, though I’m so busy right now (hence my delayed response), but if you or anyone else still needs help, then I’m happy to pursue the idea or provide any additional help and/or clarification!