Unity跳轉場景


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屬性的值,根據自己的需求來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM