How to load/ unload open world areas?

Hello,

I am currently working on an open world RPG. I have been reading several posts about this but didn’t find the ultimate solution yet.
I want to design an open world where all areas might be visited multiple times. The whole world will consist of around 250x250 tiles (32x32px each). I assume it would not be a good idea to load and have it active at once. How can I load and unload parts of the world as the player is walking around but KEEP THE STATE of items, chests empty etc.?

Would SceneManager.LoadScene/ Unload Scene do the trick or would unloaded scenes get destroyed and reset when loaded again?
Or should I consider loading the whole world but only having game objects active that are somewhere near the player?

Thank you a lot for your help, I have no idea how to proceed with this.

You probably want to go with enabling/disabling gameobjects based on the distance to the player. Using scenes is slow and a hell to set up for that amount of tiles.

What I would do is keep an 2D array of each tile that stores some data class. This class keeps track of the basic data of the tile: position in the world, visible/invisible, lists of present other objects on that tile, etc.

You then check which tiles should be loaded once the player crosses the boundaries between two tiles, and make the others invisible again.