1. 程式人生 > >Unity跳轉場景

Unity跳轉場景

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     {
 8
SceneManager.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     private
AsyncOperation 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跳轉場景