Memory Management

Let us say that I have a lot of assets in my project (over 4GB worth and more than could fit into memory at one time). BUT, I have several scenes, and each scene uses only a selection of the assets from among the total. Over the course of the game, the user will jump between many different scenes.

Now, will Unity automatically handle asset ‘loading’ and ‘unloading’ such that only the necessary assets for the scene are loaded at any one time, while the others are ‘unloaded’- As opposed to just accumilatively loading assets with each scene change until eventually, after visiting every scene once, all assets are loaded and will overburden the project? In short, can I rely on Unity to do this, or is there something I should be aware of manually?

Thanks in advance.

Yes unity will make sure only used assets are loaded at one time with a little help from you.

When you load a scene with Application.LoadLevel() everything else is unloaded.

If you call Application.LoadLevelAdditive() everything in the scene is added to whats already loaded.

If your not sure if you have some unused assets loaded you can call Resources.UnloadUnusedAssets().