Keeping inventory items and other data between levels

The problem is, that you can’t assure that the Monsters spawn with the exact some timing every time, can you?
Because otherwise you could create a ManagerActor Class that you spawn in your GameState and in the BeginPlay,
you let your Monsters call back to this actor (can be accessed over the GameState then) and the manager
gives them unique ids.

But if they spawn differently, at least 2 of them swap the position and one is alive while the other one would be dead.

PS: You could really use a manager, but that would need some more code. You could create a manager that makes everything for you.
You will give him SpawnPoints and classes it should spawn. It will also take care of the SaveGame file and instead of
dragging the Monster into the scene, you use the Spawnpoints (could create an array of Vectors) to spawn them at BeginPlay of the
Manager. Then you could make sure that the IDs are all the time the same by looping through the Spawnpoint array and spawning them
one by another, giving them the Index of the Spawnpoint array.