This page states that all assets in a scene are preloaded automatically in published builds, however not for scene 0. So the page suggests if you have no splash screen or main menu (which would be scene 0) to create a helper scene which just loads your main scene with Application.LoadLevel(1).
My app currently consists of one scene only (scene 0), so it seems that I don’t use preloading at the moment. I stumbled upon the above statement and now I’m asking myself what (perfomance?) advantages would come with the above technique.
Should I apply it to my published build?
Edit: Is preloading really skipped if I stay in scene 0? What disadvantages are resulting from this? I’d really like to understand.
From my understanding, essentially everything from a scene is loaded, and then the scene is opened.
Mostly, for a small distraction for the user, people can use a very empty scene, with a guitexture in it, to show the users that something is happening, and at the same time, call application.loadlevel(x) in a start function, so that people have something to look at, and are assured that the game is still loading, instead of stalled or something…
Example: I’m making a game for android, and didn’t have any “loading” messages between levels. But loading times for the levels on the phones were about 4-8 seconds… This is a really long time for some people… So, what’d I do? I created an empty scene, and stuck a guitexture with a scale of x:1 Y:1 on it (to show it full screen), and it fills the screen. Then I have a small script running application.loadlevel(x) at the same time. Essentially what this does is: Loads the “loadlevel” scene really fast and shows the “loading” guitexture. At the same time in the background, the next level (I specified in the script) is loading it’s contents. But, the great thing is: It doesn’t leave the current scene (thus showing the loading graphic) until it’s finished loading and ready to show the next level.
(Caveat: All you experts out there, please do correct me if I’ve got any part of this concept wrong.)
Hope this helps!
I just changed my app accordingly, so now I have a scene 0 that shows a splash-screen and loads scene 1. Now the standard splash screen of unity I was already used to loads much faster than before, then my splash screen is shown and after a few more seconds the app starts as usual. This leads me to the assumption that Unity already takes care of everything: I think, if you do not have a scene 0 that loads the next scene, then the pre-loading is done during the Unity splash-screen. This would make the information regarding the pre-loading on the above linked page outdated!