Unity內部場景的加載分為兩步:
-
Loading。是指從文件、內存(主要是Streamed scene AssetBundle)中加載Scene的內容,創建並讀取所有相關的Game objects、Assets以及Scene game managers。所有的IO操作都在這一步完成,所以它是比較耗時的過程。當這一步完成的時候,我們內部會將加載進度標記為90%。
-
Awaking。主要是一些輕量級的操作,比如在Transform的Awaking的時候,我們會將Game objects加入到它所屬於的Scene。我們這里所說的Scene加載過程中的Delay awaking就是指第二步。
比如用戶有一個大場景划分成了若干個子場景,在所有場景加載完畢我們才會開始Game play。這時我們就可以推遲所有子場景的Awaking。當所有的加載第一步完成了,我們才進行所有場景的Awaking。
用戶可以通過將AsyncOperation.allowSceneActivation設置成false來阻止Scene的Awaking,示例如下:
當加載進度AsyncOperation.progress到達90%的時候,就可以將allowSceneActivation設置成true來允許Scene awaking。