Unity官方提供了4種加載場景(scene)的方法,分別是:
1. Application.LoadLevel():同步加載
2. Application.LoadLevelAsync():異步加載
3. Application.LoadLevelAddictive():同步附加式加載
4. Application.LoadLevelAddictiveAsync():異步附加式加載
下面對這四種方法進行簡要的介紹和分析:
1.同步加載:假設當前場景為A,我們要切換到場景B,unity會在切換場景的時候將場景B中的所有內容(場景B中所有的靜態物體,不包括后續代碼中Instantiate實例化的物體)都加載到內存中,然后銷毀A,顯示B。由於加載B是同步進行的(也就是在一個線程中),所以當B場景較大的時候執行此方法會感覺到卡頓。
2.異步加載:這個與第一種情況基本一樣,唯一的區別是加載B的過程是異步的(也就是加載新場景的行為是在一個后台線程中進行的,不影響主線程的運行),這樣在加載B的時候當前場景A不受影響,可以繼續運行,所以即使場景B很大也不會感覺到卡頓。
3.同步附加式加載:假設當前場景是A,我們要加載場景B,unity在加載B的時候不會銷毀A,也就是說加載結束之后A和B將同時存在,這個適合於世界地圖比較大的時候,根據人走到的位置來動態的加載世界地圖中的不同部分。當然前提是將世界地圖做成多個不同的scene文件。
4.異步附加式加:這種情況與上一種基本一樣,區別仍然在於加載B的過程是在一個后台線程中異步進行的。
注意:異步加載的方式最主要的應用就是制作場景切換過程中的過渡界面。具體方法可以參見雨松大大的blog。地址:http://www.xuanyusong.com/archives/1427/