Sure thing.
First you need to right click in the content browser and create a Structure called “S_Item_Data” which will contain all of the dynamic data for each item in your game. This wont list specific data like the items name, but will be a placeholder to add the items name and so forth later.
In that struct you will need to add a bool and name it “Is Destroyed in world”
Next you will need to make a new blueprint Actor. This will be named Master Item to be a parent for your actual game items like a first aid kit or weapon and so forth. You do this so that when you make a child of the master item, it will keep all of the variables in the master.
In the master item blueprint make a variable of type “The struct you made before”. Mine was called S_Item_Data.
You can see on the upper right that the blueprint now has all of the item data from the struct and you can change those placeholders with any information you want.
Next, right click on the master item blueprint and create a child of that blueprint.
In the child rename the item whatever you want in the S_Item_Data area in the upper right hand corner. Add your mesh for the item to be seen in game.
Now you need to make a pickup function. I’ve made one in the image below.
At the end you’ll see the Is Destroyed in World bool being set for that specific actor in the level and then being destroyed when picked up.
You must then save that data in the Save Game blueprint that you make for each item.
Now in the level blueprint make a for each loop that checks each item in the level to see whether it has been destroyed. It doesn’t matter if its the first time the player has opened the level or not because they wont have set any of the Is Destroyed bools yet.
When the level is loaded it will check the items Destroyed status. If it has been destroyed before, it will then destroy it in the level once it is reloaded on Begin Play as seen in the image below.
Where it says that you need to add the items in the level to an array, it just means that to check all of the items they need to be added to an array at Begin play to an array of type Actor or Master ITems. This will allow the for each loop to check each item in that array for the Is Destroyed bool.
I hope that was at least a little bit clear
Cheers!