Passing object types through levels?

Experimenting with level streaming and other stuff, i find myself struggling about trying to make the weapons i pickup (not in the inventory, but attached to the character’s back and such) available through different levels.

The problem is, as i suspect, that even if i store in the gameinstance in a variable the master actor i want to keep, that actor is destroyed anyways, because its referencing an actor, once the level is unloaded, so i really dont have a clue how to make it work. I was thinking about trying with the class of the object instead of the bp reference but i wanted to do it with the bp itself because i want to keep my used ammo, and my used clip, for example.

So, how to approach this? the way i do it, is before i load the new level, i call the gameinstance and i pass all the variables i want to keep for the next level, then when i load the new level, from the character i call the function of the game instance retrieving all the variables. Everything works, except of course for the weapons emselves, because they are actors and not variables.

Any ideas or the direction i should take, will be really appreciated. Thanks in advance.

I ended just passing variables storing the current ammo and the clip size, and just spawning the weapon based on a variable called “weapon type” that defines what weapon to spawn, and then i set the members of the struct in that spawned weapon with the previous ammo variables i got.

Anyways, this is a really messy way to do it, im pretty sure there is a simpler way.