其實momo寫的就非常清楚了
基本上大家都會異步加載的方式來實現loading畫面
畢竟遊戲大了,只用loadlevel會lag 卡卡的
要了解異步,要先了解AsyncOperation類別
有四個Variables
目前要用到的只有兩個
allowSceneActivation和progress
progress的取值在0.1~1之間,不會等於1
為了計算百分比,以下會x100來計算
一般來說,我們都是 A場景到C場景,中間會有個B場景當LOADING畫面
而通常我們載入一些資源較少的場景,loading會很快,這樣你可能連影都沒看到就跳到下個場景了
所以allowSceneActivation 就是用來加載完成後,什麼時候你才要讓他跑下個場景
設為false的話就是永遠不跳到下個場景,直到true才會
======================
1 | async.allowSceneActivation = false; |
基本上跟momo那篇一樣,不過IEnumerator loadScene()內在加入上面代碼
async.allowSceneActivation = false; 就是加載完之後不允許直接跳下個畫面
1 | async.progress |
讀取進度通常會小於0.9的時候就跳畫面了,因此用兩個while迴圈
一個是在0.9前,一個是在0.9後,也就是讀取完場景前跟讀取完場景後
1.第一個while迴圈,還沒讀取完
當displayProgress小於當前讀取進度的百分比
就++,然後利用 SetLoadingSlider ,返回畫面的進度條讓他緩動 (( 就是1~90,每次跳躍都可以看到1.2.3.4這樣跳,才不會一開始10% 數字立馬跳到90%
2.第二個while迴圈,讀取完後
因為async.progress不會等於1,也就是 toProgress 不會讀取到100% ((詳細讀第一個迴圈
手動的把toProgress設為100 後進入第二個迴圈
接著跟上面一樣,就完成啦~
完整代碼 :
1 | using UnityEngine; |