您好,登錄后才能下訂單哦!
win10
unity2018.2.6
加載場景現(xiàn)在習(xí)慣用異步加載
AsyncOperation ao = SceneManager.LoadSceneAsync(string SceneName);
寫在協(xié)程里,而從ao中可以獲得加載進度
float progress = ao.progress;
這樣可以控制加載進度條,或者文字顯示百分比
按照網(wǎng)上很多事例的同樣用法,一般是先把自動加載場景關(guān)掉
ao.allowSceneActivation = false;
也就是說,加載完成,也不跳轉(zhuǎn)場景,需要手動控制
當(dāng)然這里有個小抗就是這個false要在加載進度在90%以下
如果到了90%以后,再設(shè)置為true,也不會跳轉(zhuǎn)
我原先的做法就是在協(xié)程里設(shè)while循環(huán),里面判斷是否到了90%,到了則跳出循環(huán)并設(shè)置為true,然后就自動加載了。
while(ao.progress<0.9f)
{
//……
}
ao.allowSceneActivation = true;
從表現(xiàn)上來看,沒有任何問題
但是這里有個小坑,尤其是webgl端要注意的是如果一開始設(shè)置
ao.allowSceneActivation = false;
則加載新場景會大量的占用內(nèi)存,對于webgl端所運行的瀏覽器來說,如果場景大,那根本是直接奔潰。
所以,正確做法就是一開始就設(shè)置為true
ao.allowSceneActivation = true;
反正是異步的,加載動畫什么的也不會卡,關(guān)鍵是不會莫名其妙的占用大量內(nèi)存,當(dāng)然這么說是因為加載場景時采用這兩種不同策略,為什么內(nèi)存的占用會差距如此之大,這個機制不太了解。
其實不論發(fā)布什么平臺,都是這樣,但是pc端內(nèi)存大了也抗的住,而webgl端就太脆弱了,一定要注意。
剛剛想到另一點,就是如果把場景打成ab包進行加載,也是會巨量占用內(nèi)存,之前做的webgl項目,場景比較大,這樣加載瀏覽器根本無法承受(除非是非常小的場景)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。