Unity跳轉場景
阿新 • • 發佈:2018-08-06
manager avi dsc man set class 最大值 atime name
Unity中如何加載場景
1、首先需要將場景添加到 Build Settings中,如下圖:
2、引用using UnityEngine.SceneManagement;
同步加載:如果場景很大,有可能會卡頓。
1 using UnityEngine; 2 using UnityEngine.SceneManagement; 3 4 public class TestA : MonoBehaviour 5 { 6 private void Start() 7 { 8 SceneManager.LoadScene("SceneName"); 9 } 10 }
異步加載:
我們需要三個場景來完成異步加載,開始場景、過渡場景、目標場景,一般會在過渡場景來做個加載進度條。
假設我們現在有TestA、TestB、TestC三個場景,如何完成A到B到C的異步加載,並實現加載進度條呢?代碼如下:
在TestA場景中掛載腳本TestA
1 using UnityEngine; 2 using UnityEngine.SceneManagement; 3 4 public class TestA : MonoBehaviour 5 { 6 private void Start() 7 { 8SceneManager.LoadSceneAsync("TestB"); 9 } 10 }
在TestB場景中掛載腳本TestB
1 using System.Collections; 2 using UnityEngine; 3 using UnityEngine.SceneManagement; 4 using UnityEngine.UI; 5 6 public class TestB : MonoBehaviour 7 { 8 public Slider slider; //加載進度條 9 privateAsyncOperation mAsyncOperation; //異步加載信息 10 11 private void Start() 12 { 13 StartCoroutine(LoadScene()); 14 } 15 private void Update() 16 { 17 UpdateSlider(); 18 } 19 /// <summary> 20 /// 異步加載場景 21 /// </summary> 22 /// <returns></returns> 23 IEnumerator LoadScene() 24 { 25 mAsyncOperation = SceneManager.LoadSceneAsync("TestC"); 26 //不跳轉場景,停留在當前場景 27 mAsyncOperation.allowSceneActivation = false; 28 yield return mAsyncOperation; 29 } 30 /// <summary> 31 /// 更新加載進度條 32 /// </summary> 33 private void UpdateSlider() 34 { 35 if (slider.value >= 1) 36 { 37 //跳轉到目標場景 38 mAsyncOperation.allowSceneActivation = true; 39 return; 40 } 41 else if (slider.value >= 0.9f) 42 { 43 slider.value += Time.deltaTime; 44 return; 45 } 46 //mAsyncOperation.progress屬性為場景加載進度,但是最大值為0.9f。 47 slider.value = mAsyncOperation.progress; 48 49 } 50 }
這樣就可以完成異步加載,並實現加載進度條。
有兩點需要註意:
1、mAsyncOperation.progress屬性最大值為0.9f。
2、用mAsyncOperation.allowSceneActivation來控制什麽時候跳轉場景。
如果場景太小的,加載會非常快,進度條會一閃而過,所以進度條是否使用mAsyncOperation.progress屬性的值,根據自己的需求來。
Unity跳轉場景