How to switch scenes with no delay

Right now I have a main menu which is stored in a separate scene to the one which contains the game. I would like to be to instantly switch scenes without the screen freezing for a couple seconds when I do so. I thought that Application.LoadLevelAsync would be the secret sauce but the same thing happens.

Is there a way to make this happen without putting my game and its menus in the same scene?

The only way that I have found that works quicker is to handle scene changes yourself using prefabs. The amount of time it takes to Instantiate a prefab is much shorter than loading a level. The main issue you have with this is that if you don’t have the memory overhead to have both scenes in one you might run into problems.

Hope this helps.

I wouldn’t think there is a way to stop it freezing when it loads but I have an idea to hide the freezing.

You could make a giant Image that would be a loading screen. Have that as a guiTexture as big as the whole screen and just enable the guiTexture component right before you call the function to load the screen.

This is more of an idea than “real solution” to the problem.