SceneManager 场景管理
using UnityEngine.SceneManagement;
描述:运行时的场景管理方法。
静态变量 | 说明 |
---|---|
sceneCount | 场景的总数。 |
sceneCountInBuildSettings | 在BuildSettings中的场景数量。 |
静态函数 | 说明 |
---|---|
CreateScene | 创建一个空的新场景并指定名称。名称不能为空或者与已存在的场景名称一样。 |
GetActiveScene | 获取激活的场景。 |
GetSceneAt | 获取在场景管理列表添加场景的索引。索引必须大于或等于0并且小于SceneManager.sceneCount。 |
GetSceneByName | 通过场景添加到场景管理器的指定名称查找该场景。该名称不会有.unity扩展名。在BuildSettings窗口中显示返回匹配到的首个场景的名称,该名称可以是名称的最后部分。在Build Settings中显示的名称也可以是路径,依然没有扩展名,在这种情况下将会仅返回精确匹配。这是不区分大小写的。 |
GetSceneByPath | 查找所有给定资源路径并添加到SceneManager中的场景。场景路径。相对于工程文件夹下。就像: “Assets/MyScenes/MyScene.unity”。 |
LoadScene | 通过在Build Settings中它们的名称或索引加载场景。指定场景名称可以是路径的最后部分不加.unity扩展名或者全部路径不加.unity扩展名。该路径在 Build Settings窗口中被精确的显示出来。如果场景名是指定的将会加载匹配到的首个场景。如果有多个名称相同但是路径不同的场景,你应该使用全部路径。注意那是不区分大小写的。 |
LoadSceneAsync | 在背景中异步加载场景。指定场景名称可以是路径的最后部分不加.unity扩展名或者全部路径不加.unity扩展名。该路径在 Build Settings窗口中被精确的显示出来。如果场景名是指定的将会加载匹配到的首个场景。如果有多个名称相同但是路径不同的场景,你应该使用全部路径。注意这不区分大小写。 |
MergeScenes | 该属性将场景资源合并到destinationScene。该函数合并场景资源内容到目的场景并删除原场景资源。所有根资源场景下的物体移动到根目的场景目录下。注意:该函数是有破坏性的:当资源合并完成后原有资源场景将会被立刻销毁。 |
MoveGameObjectToScene | 移动一个物体从它当前场景到一个新的场景中。它必须要求该物体在当前场景的根目录下。 |
SetActiveScene | 设置被激活的场景。 |
UnloadScene | 卸载所有和指定场景关联的物体。指定场景名称可以是路径的最后部分不加.unity扩展名或者全部路径不加.unity扩展名。该路径在 Build Settings窗口中被精确的显示出来。如果场景名是指定的将会加载匹配到的首个场景。如果有多个名称相同但是路径不同的场景,你应该使用全部路径。注意该方法不区分大小写。注意该资源当前不被卸载,为了释放资源内存调用Resources.UnloadAllUnusedAssets。 |
静态事件
// Static Events
//
public static event UnityAction<Scene, Scene> activeSceneChanged {
add;
remove;
}
public static event UnityAction<Scene, LoadSceneMode> sceneLoaded {
add;
remove;
}
public static event UnityAction<Scene> sceneUnloaded {
add;
remove;
}
示例:
void Start()
{
SceneManager.activeSceneChanged += OnSceneChanged;
}
private void OnSceneChanged(Scene scene1, Scene newScene)
{
...
}
void OnDestroy()
{
SceneManager.activeSceneChanged -= OnSceneChanged;
}
🔚