Unity 在编辑器播放模式中同步加载场景

时间:2021-02-07 21:46:37

标签: c# unity3d

主要问题

我正在尝试在播放模式下在编辑器中加载场景并获得以下确切行为:

SceneManager.LoadScene(ScenePath, LoadSceneMode.Single);

除了不需要场景在构建设置中

我希望这能奏效:

EditorSceneManager.LoadSceneInPlayMode(ScenePath, new UnityEngine.SceneManagement.LoadSceneParameters(LoadSceneMode.Single));

然而,场景似乎是异步加载的,我不希望在我的特定用例中如此。

有没有办法完成我在这里寻找的东西?

其他细节(我的用例和“为什么”我想要这个)

我正在做的是为场景集创建一个加载器,它将附加地加载一堆对其加载行为具有不同约束的场景(例如:加载异步,在转换相同->相同时总是重新加载,以及其他功能) .当我不在播放模式时,我在编辑器中运行良好,我在内置播放器中运行良好,但最后一种情况是在编辑器和播放模式中运行.

我完全需要“单一”加载的原因是当您从一个场景集过渡到另一个场景时,它们不共享公共场景。由于我无法卸载所有场景,因此我只是跳过了卸载步骤,并使用 LoadSceneMode.Single 同步加载第一个场景以卸载其他所有场景。

如果它是相关的(我真的希望不是),我正在尝试从自定义编辑器的 OnInspectorGUI 调用中执行此操作。我是通过按下按钮来触发它的。

我知道的选项:

  • EditorSceneManager.OpenSceneOpenSceneMode.Single
    • 问题:在播放模式下不起作用
  • EditorSceneManager.LoadSceneInPlayModeLoadSceneParameters(LoadSceneMode.Single)
    • 问题:场景未同步加载
  • SceneManager.LoadSceneLoadSceneMode.Single
    • 问题:场景需要在构建设置中
  • EditorSceneManager.LoadSceneLoadSceneMode.Single
    • 问题:场景需要在构建设置中

1 个答案:

答案 0 :(得分:0)

原来我对 SceneManager.LoadScene(ScenePath, LoadSceneMode.Single); 甚至会做什么有误解。

一位朋友指出文档明确指出加载将在 1 帧内发生,而不是实际发生在调用站点。

如果您遇到类似的问题,有几种选择。您可以加载异步并订阅该回调以执行激活它们。另一种选择是订阅 SceneManager.sceneLoaded 并在那里执行激活。