1.新建場景
可以CTRL+N(記得保存),也可以在File下面New Scen切換場景別忘記場景放在Build Settings中,可直接選中拖拽,

2.同步加載和異步加載:
無論是同步加載還是異步加載最好使用檔案路徑名稱作為引數,防止重名的時候加載錯,
同步加載:SceneManager.LoadScene("Scenes/Scence02");
執行緒是阻塞的
異步加載:SceneManager.LoadSceneAsync("Scenes/Scence02");
不阻塞執行緒,加載程序中繼續執行代碼
異步加載有回傳值,回傳一個AsyncOperation
代碼理解:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class TestScenceLoad : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
StartCoroutine(Load());
GameObject cube = GameObject.Find("Cube");//用物體的名字
GameObject cube1 = GameObject.FindGameObjectWithTag("Fangkuai");//記得添加進去
DontDestroyOnLoad(cube);
DontDestroyOnLoad(cube1);
}
// Update is called once per frame
void Update()
{
}
private IEnumerator Load()
{
//同步加載場景
//引數可添加場景名稱或索引
SceneManager.LoadScene("Scenes/Scence02");
SceneManager.LoadScene(1);
//異步加載場景
//AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("Scenes/Scence02",LoadSceneMode.Additive);//場景會進行疊加
AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("Scenes/Scence02");//場景不進行疊加
asyncOperation.allowSceneActivation = false;//加載完成之后是否允許跳轉
while (asyncOperation.progress<0.9f)//加載進度
{
Debug.Log("當前記載進度是"+asyncOperation.progress);
yield return null;//等待一幀
}
Debug.Log("您當前記載進度是" + asyncOperation.progress);
asyncOperation.allowSceneActivation = true;
yield return null;
//不加上LoadSceneMode.Additive附加場景后面便不會執行了
if (asyncOperation.isDone)//跳轉成功之后代表完成
{
Debug.Log("加載并跳轉完畢");
}
else
{
Debug.Log("還沒加載并跳轉完畢");
}
}
}
SceneManager.LoadSceneAsync("Scenes/Scence02");
運行結果:

SceneManager.LoadSceneAsync("Scenes/Scence02",LoadSceneMode.Additive);
運行結果:

3.保留物體
API: DontDestroyOnLoad(XXX);引數傳遞要保留的物體
宣告
GameObject cube = GameObject.Find("Cube");//用物體的名字
GameObject cube1 = GameObject.FindGameObjectWithTag("Fangkuai");//記得把Tag添加進去
DontDestroyOnLoad(cube);
DontDestroyOnLoad(cube1);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/87211.html
標籤:其他
