SceneManager场景加载

​ 需要引入UnityEngine.SceneManagement,其中分为两种方法,使用前需要再unity管理器中的file设置里的BuildSettings中加入需要管理的场景,两种加载方法可以使用下标(即BuildSettings中场景的排布顺序,从0开始),或者使用场景的名称(推荐)。可以通过传入参数LoadSceneMode.Single或者LoadSceneMode.Additive来指定加载方式,前者会卸载当前场景,后者则不会,默认为前者

同步加载LoadScene

​ 无返回值,加载过程中可能会出现卡顿,卡顿时间随加载的场景的复杂度而定,一般不推荐使用

异步加载LoadSceneAsync

​ 时LoadScene的异步版本,它允许游戏在加载新场景的同时继续运行其他任务。它会返回一个异步操作AsyncOperation,可以对加载的场景进行简单操作。

​ AsyncOperation带有四个可操作成员变量,主要的有三个:

1
allowSceneActivation bool 类型

是否允许激活当前场景,true为允许,

1
progress float 类型

会显示加载进度(0~1,可用于制作简单的加载条),当allowSceneActivation为false时,场景并不会完全加载,progress会开在0.9,可以实现简单的操作,实现场景转换,当为true时会完全加载,并激活该场景。

1
isDone bool 类型

用于显示是否完全加载场景,即progress是否为1

1
SceneManager.LoadSceneAsync(sceneName).completed += (obj) =>{函数体}

​ 该代码为其设置了一个回调函数,当场景完全加载后会调用该函数,可以进行一些初始化操作obj则是SceneManager.LoadSceneAsync的返回值。

Addressables资源管理的场景加载

​ 再使用其加载前需要先将需要加载的场景加入Addressables资源管理器中(这里主要写如何加载,前置设置就忽略了)

异步加载LoadSceneAsync

​ Addressables.LoadScene同步加载一般不用

参数:

​ LoadSceneMode:一个 LoadSceneMode 枚举值,指定如何加载场景。也是分为Additive和Single两种前者不卸载当前场景,后者会卸载当前场景。

​ Location:一个 LoadSceneParameters.Location枚举值,指定场景文件的来源位置,但通常对于Addressables来说,这个参数不是必需的,因为Addressables系统已经管理了资源的加载位置。

​ activatoOnload:一个布尔值,指定场景加载完成后是否自动激活。

返回值:

方法返回一个 AsyncOperationHandle

1
Addressables.LoadSceneAsync(sceneName).completed += (obj) =>{函数体}

​ 该代码为其设置了一个回调函数,当场景完全加载后会调用该函数,可以进行一些初始化操作obj则是Addressables.LoadSceneAsync的返回值。