Actually I know how to load scene asynchronously with using SceneManager.LoadSceneAsync(), but it cannot handle stopping situation while loading some scenes which has a lot of resources.
It seems that some loading procedure occurs after asyncLoad.isDone to initialize a lot of resources.
I want to show some specific loading progress view (like “loading…” text with cute animations) until this resource-loading procedure was finally done.
And I found that SceneManager.sceneloaded is called after resource-loading procedure.
Is there any ideas to solve this problem?
Thanks in advance.
I think you will be disappointed, it can’t be done fully smooth without losing frames. Both because the async load isn’t fully async and because it needs to do more work when “completed”, and also all of your own Awake() and Start() functions need to run all at one frames time.
You can try to do your init/loading in Update() and chop it up into say 7ms chunks, and set Time.timeScale = 0 until you are ready, but you may end up like me with uglier code and still not working ok.
I was working on a VR-game where 90 FPS must be achieved, I ended up fading screen to all black, do all loading, then fade in, to hide the choppiness.
You can also see with the frame profiler that it is impossible to do all frames in 11.1ms (in my case for 90Hz), since things outside of your control takes longer at the actual scene switch. But if you accept a certain amount of choppiness/uneven frame rate maybe a loading progress indicator can be made working. But for a VR-game where stuttering is unacceptable it is better to fade to black in Unity.
I have also same issue from couple of days anyone have solution for this so please reply.