NGUI的異步場景加載進度條
阿新 • • 發佈:2018-03-30
unity sce easyn math debug system log pan collect
1、直接創建三個場景,其中第二個場景是用來顯示進度條加載的界面,進度條用UISlider,不會的看我前面的博文就可以了。
2、這裏提供兩種方法,建議使用第一種,加載比較平緩
方法一:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class LoadingPags : MonoBehaviour { public UISlider progressBar; //進度條的引用 private string ScenceName="C"; //加載場景的名字 private float dtimer = 0; private float target = 0; AsyncOperation op = null; private void Start() { Debug.Log("進入異步"); //op = SceneManager.LoadSceneAsync(ScenceName); //進入loadScene方法//op.allowSceneActivation = false; progressBar.value = 0; //棄用前將其進行初始化了 StartCoroutine(ProcessLoading()); } private void Update() { dtimer += Time.deltaTime; progressBar.value = Mathf.Lerp(progressBar.value, target, dtimer * 0.2f); //乘以的數值用來控制加載的速度,當新場景比較小的時候可以使用較小的值,有一定的效果,當場景加載較大的時候就不建議這麽使用了 if(progressBar.value>=0.99f) { progressBar.value = 1; //使其的值達到完整 op.allowSceneActivation = true; //為true 的時候才可以進行加載新的場景 } } IEnumerator ProcessLoading() { op = SceneManager.LoadSceneAsync(ScenceName); //進入loadScene方法 op.allowSceneActivation = false; while (true) //死循環,使其在場景沒有加載完成時就不退出了 { target = op.progress; if(target>=0.9f) //當場景加載了90%了 { target = 1; yield break; } yield return 0; } } }
第二種:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class Loadign : MonoBehaviour { public UISlider uislider; private AsyncOperation asyn=null; public static string LoadingName; //聲明一個靜態的字符串變量倆保存要加載的場景名稱 void Start () { if(uislider) { //進度條丟失了 } StartCoroutine(Loading()); } // Update is called once per frame void Update () { uislider.value = asyn.progress; //Debug.Log(uislider.value); //if (uislider.value>=0.8) //{ // uislider.value = 1; // asyn.allowSceneActivation = true; //} } IEnumerator Loading() { asyn = SceneManager.LoadSceneAsync(2); //加載第三個嘗盡 asyn.allowSceneActivation = false; //uislider.value = asyn.progress; //賦值 yield return asyn; } //封裝好的靜態函數 public static void LoadNewScene(string value) { LoadingName = value; SceneManager.LoadScene("Loadign"); } }
NGUI的異步場景加載進度條