SceneManager 场景管理

  1. 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。

静态事件

  1. // Static Events
  2. //
  3. public static event UnityAction<Scene, Scene> activeSceneChanged {
  4. add;
  5. remove;
  6. }
  7. public static event UnityAction<Scene, LoadSceneMode> sceneLoaded {
  8. add;
  9. remove;
  10. }
  11. public static event UnityAction<Scene> sceneUnloaded {
  12. add;
  13. remove;
  14. }

  示例:

  1. void Start()
  2. {
  3. SceneManager.activeSceneChanged += OnSceneChanged;
  4. }
  5. private void OnSceneChanged(Scene scene1, Scene newScene)
  6. {
  7. ...
  8. }
  9. void OnDestroy()
  10. {
  11. SceneManager.activeSceneChanged -= OnSceneChanged;
  12. }

?