win10
unity2018.2.6
加載場景現(xiàn)在習慣用異步加載
AsyncOperation ao = SceneManager.LoadSceneAsync(string SceneName);
寫在協(xié)程里,而從ao中可以獲得加載進度
float progress = ao.progress;
這樣可以控制加載進度條,或者文字顯示百分比
按照網(wǎng)上很多事例的同樣用法,一般是先把自動加載場景關掉
ao.allowSceneActivation = false;
也就是說,加載完成,也不跳轉(zhuǎn)場景,需要手動控制
當然這里有個小抗就是這個false要在加載進度在90%以下
如果到了90%以后,再設置為true,也不會跳轉(zhuǎn)
我原先的做法就是在協(xié)程里設while循環(huán),里面判斷是否到了90%,到了則跳出循環(huán)并設置為true,然后就自動加載了。
while(ao.progress<0.9f)
{
//……
}
ao.allowSceneActivation = true;
從表現(xiàn)上來看,沒有任何問題
但是這里有個小坑,尤其是webgl端要注意的是如果一開始設置
ao.allowSceneActivation = false;
則加載新場景會大量的占用內(nèi)存,對于webgl端所運行的瀏覽器來說,如果場景大,那根本是直接奔潰。
所以,正確做法就是一開始就設置為true
ao.allowSceneActivation = true;
反正是異步的,加載動畫什么的也不會卡,關鍵是不會莫名其妙的占用大量內(nèi)存,當然這么說是因為加載場景時采用這兩種不同策略,為什么內(nèi)存的占用會差距如此之大,這個機制不太了解。
其實不論發(fā)布什么平臺,都是這樣,但是pc端內(nèi)存大了也抗的住,而webgl端就太脆弱了,一定要注意。
剛剛想到另一點,就是如果把場景打成ab包進行加載,也是會巨量占用內(nèi)存,之前做的webgl項目,場景比較大,這樣加載瀏覽器根本無法承受(除非是非常小的場景)
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。