RPG game, saving state problem.

Im making an RPG style game. I have an inventory system and a portal system that links scenes , the project is for mobile so Im breaking the world up into small chunks. You can drop items where ever you want , pick them up , the item gets stored in your inventory, then set to DontDestoryOnLoad so it stays in memory as you travel between scenes.

My problem is that when you come back to the scene again it reloads it and places the item back in the world.

Im trying to come up with an elegant solution to tracking whats been done. I’m going to have to track items collected, puzzles solved, which NPCs you’ve spoken to etc. I’m worried that if I use the playerPrefs ill hit the memory limit really quickly.

Anyone have an efficient way of handling this kind of problem ?

One way to look at it is to instaniate your items in random places after load. Or you can make it so your items come from loot bags and chest or npc. If you do it this way then you can use Player Prefs to keep track of your items. So if an item fell on the ground from being spawned, you could use the save code to remember its class name and position. Then reload a new version of itself in the same position next time the level loads.

Unfortunately the game is quite scripted, puzzles, items and conversations are placed not random so progress needs to be tracked.

Ok well ive come up with some ideas. But most of them hinge on every item in my Scene having a unique ID. Ive read some other scripts and the unity unique instance id can change between sessions. I can add a variable and set it manually to every item i drop into a scene but what I think I need is an editor script that assigns a unique ID to every Object of type Item I place in the game , no matter what the scene.

I havnt done any editor scripting yet, anyone know if thats possible ?