UGUI提高 非同步載入場景進度條
阿新 • • 發佈:2019-02-04
原創
直接上程式碼,需要注意幾個API就可以了。
using UnityEngine.SceneManagement; //使用場景管理空間
AsyncOperation prog = SceneManager.LoadSceneAsync("場景"); //新的非同步載入場景API,返回非同步引數
AsyncOperation.progress // 獲取進度(我測試了一下最大是0.9,可能要真正跳到場景才是1)
AsyncOperation.allowSceneActivation // //如果載入完成,是否立刻進入場景
程式碼:
using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.SceneManagement; public class Load : MonoBehaviour { public Slider progressUI; public Text progressValue; private AsyncOperation prog; void Start() { prog = SceneManager.LoadSceneAsync("場景名"); //非同步載入場景 StartCoroutine(LoadingScene()); } //設定滑動條 private void setProgressValue(int value) { progressUI.value = value; progressValue.text = value + "%"; } private IEnumerator LoadingScene() { prog.allowSceneActivation = false; //如果載入完成,也不進入場景 int toProgress = 0; int showProgress = 0; //測試了一下,進度最大就是0.9 while (prog.progress < 0.9f) { toProgress = (int)(prog.progress * 100);
while ( showProgress<toProgress) { showProgress++; setProgressValue(showProgress); yield return new WaitForEndOfFrame(); //等待一幀 } } //計算0.9---1 其實0.9就是載入好了,我估計真正進入到場景是1 toProgress = 100; while (showProgress < toProgress ) { showProgress++; setProgressValue(showProgress); yield return new WaitForEndOfFrame(); //等待一幀 } prog.allowSceneActivation = true; //如果載入完成,可以進入場景 } }
參考了一下別的地方的文章,但是實在不知道哪個是出處,另外,這個載入速度太快了,我的電腦,我搞了很複雜的場景也是一下就過去了。