• Unity 场景管理/切换


    SceneManager

      

      场景管理器,包含多个与场景管理相关的函数,将这些函数结合使用就能实现多种场景的切换方式,并提高游戏性能。

    LoadScene + GetSceneByBuildIndex + LoadSceneMode

      LoadScene()

     

      在大多数情况下,为了避免在加载时出现暂停或者性能问题,应该使用该函数的异步版本:LoadSceneAsync()。

      使用 LoadScene() 时,加载不会立即发生,它会在下一帧中完成。这种半异步行为就可能导致帧断续,并且可能会造成混乱。

      GetSceneByBuildIndex()

      它的作用顾名思义就是获取 Build Settings 中场景的下标。

      

      场景为先加载,后激活的,LoadSceneMode(加载模式)有两种:

      使用 Slingle 模式:关闭已经加载的所有场景,只加载一个新的场景,新场景将被添加到 SceneManager 的目录当中。

      使用 Additive 模式:其他已加载的场景仍然保持激活的状态,同时加载一个新的场景。

    SetActiveScene + GetActiveScene

      SetActiveScene()

      

      激活已加载的场景,如果场景未加载,则返回 false。

      GetActiveScene()

      

      获取已激活的场景。

    CreateScene + MergeScenes

      CreateScene()

      

      运行时创建一个新的场景。

      MergeScenes()

      

      将源场景的内容合并到目标场景当中,并删除源场景;源场景根目录下的所有游戏对象都将移动到目标场景的根目录下。

      需要注意的是,该函数具有破坏性 —— 合并完成后,源场景将被销毁。

    MoveGameObjectToScene

      

      将 GameObject 从当前场景移动到指定的新场景。

      只能将根游戏对象从一个场景移动到另一个场景。这意味着要移动的 GameObject 不能是其他场景中任何其他 GameObject 的子对象。

      这仅适用于将 GameObjects 移动到已加载的场景(LoadSceneMode.Additive)。如果要加载单个场景,要确保在移动到新场景的 GameObject 上使用 DontDestroyOnLoad,否则 Unity 就会在加载新场景的时候将它删除。

      

    UnloadSceneAsync

      

      销毁与指定场景关联的所有 GameObject,并从 SceneManager 中移除场景。

      指定的场景名称可以是完整的场景路径,也可以是场景名称。如果仅给出场景名称,则将卸载匹配列表中的第一个场景,所以如果有多个具有相同名称但路径不同的场景,就要使用完整的场景路径。

      需要注意的是:

      • 不区分大小写,并且由于它是异步处理,因此无法保证完成的时间。

      • 资产目前尚未卸载。为了释放资产内存,可以调用 Resources.UnloadUnusedAssets()。

      • 如果没有要加载的场景,则无法使用 UnloadSceneAsync()。例如,只有单个场景的项目就无法使用该函数。

    ***| 以上内容仅为学习参考、学习笔记使用 |***

  • 相关阅读:
    VML 和 SVG 的区别
    ie神器htc
    js函数实现递归自调用的方法
    http状态码
    高级算法——贪心算法(背包问题)
    高级算法——贪心算法(找零问题)
    关于arguments.callee
    检索算法——二分查找
    检索算法——顺序查找(最大值、最小值、自组织数据)
    高级排序算法——快速排序(一种分而治之的算法)
  • 原文地址:https://www.cnblogs.com/ChenZiRong1999/p/13162030.html
Copyright © 2020-2023  润新知