API
官方文档
SceneManager | class in UnityEngine.SceneManagement |
---|
描述 | 运行时的场景管理。 |
静态变量 | |
---|
sceneCount | 当前加载的场景总数。 |
sceneCountInBuildSettings | Build Settings 中的场景数量。 |
静态函数 | |
---|
CreateScene | 在运行时使用给定名称创建一个新的空场景。 |
GetActiveScene | 获取当前活动的场景。 |
GetSceneAt | 获取 SceneManager 的已加载场景列表中索引处的场景。 |
GetSceneByBuildIndex | 从构建索引中获取场景结构。 |
GetSceneByName | 搜索已加载的场景,查找包含给定名称的场景。 |
GetSceneByPath | 搜索所有已加载的场景,查找具有给定资源路径的场景。 |
LoadScene | 按照 Build Settings 中的名称或索引加载场景。 |
LoadSceneAsync | 在后台异步加载场景。 |
MergeScenes | 这会将源场景合并到 destinationScene 中。 |
MoveGameObjectToScene | 将游戏对象从当前场景移至新场景。 |
SetActiveScene | 将场景设置为活动状态。 |
UnloadSceneAsync | 销毁所有与给定场景关联的游戏对象,并将场景从 SceneManager 中移除。 |
Events | |
---|
activeSceneChanged | 订阅此事件可在活动场景发生变化时收到通知。 |
sceneLoaded | 向此事件添加委托,以在加载场景时收到通知。 |
sceneUnloaded | 向此事件添加委托以在卸载场景时收到通知。 |
存疑
- LoadScene函数官方描述不会立即加载场景,而是在下一帧加载。GetSceneByBuildIndex函数官方描述如果将场景添加到 Build Settings 中的给定构建索引处,且场景已加载,则此方法将返回有效场景。如果场景未加载,SceneManager 将无法返回有效场景。但是Update中执行以下语句会打印上面刚加载的场景的名字
if (Input.GetKeyDown(KeyCode.Space) && !Touch) {
Touch = !Touch;
Debug.Log(SceneManager.GetSceneByBuildIndex(1).name);
SceneManager.LoadScene(1, LoadSceneMode.Single);
Debug.Log(SceneManager.GetSceneByBuildIndex(1).name);
SceneManager.SetActiveScene(SceneManager.GetSceneByBuildIndex(1));
}
加载了但没完全加载