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