我正在尝试在播放模式下在编辑器中加载场景并获得以下确切行为:
SceneManager.LoadScene(ScenePath, LoadSceneMode.Single);
除了不需要场景在构建设置中。
我希望这能奏效:
EditorSceneManager.LoadSceneInPlayMode(ScenePath, new UnityEngine.SceneManagement.LoadSceneParameters(LoadSceneMode.Single));
然而,场景似乎是异步加载的,我不希望在我的特定用例中如此。
有没有办法完成我在这里寻找的东西?
我正在做的是为场景集创建一个加载器,它将附加地加载一堆对其加载行为具有不同约束的场景(例如:加载异步,在转换相同->相同时总是重新加载,以及其他功能) .当我不在播放模式时,我在编辑器中运行良好,我在内置播放器中运行良好,但最后一种情况是在编辑器和播放模式中运行.
我完全需要“单一”加载的原因是当您从一个场景集过渡到另一个场景时,它们不共享公共场景。由于我无法卸载所有场景,因此我只是跳过了卸载步骤,并使用 LoadSceneMode.Single 同步加载第一个场景以卸载其他所有场景。
如果它是相关的(我真的希望不是),我正在尝试从自定义编辑器的 OnInspectorGUI 调用中执行此操作。我是通过按下按钮来触发它的。
EditorSceneManager.OpenScene
与 OpenSceneMode.Single
EditorSceneManager.LoadSceneInPlayMode
与 LoadSceneParameters(LoadSceneMode.Single)
SceneManager.LoadScene
与 LoadSceneMode.Single
EditorSceneManager.LoadScene
与 LoadSceneMode.Single
答案 0 :(得分:0)
原来我对 SceneManager.LoadScene(ScenePath, LoadSceneMode.Single);
甚至会做什么有误解。
一位朋友指出文档明确指出加载将在 1 帧内发生,而不是实际发生在调用站点。
如果您遇到类似的问题,有几种选择。您可以加载异步并订阅该回调以执行激活它们。另一种选择是订阅 SceneManager.sceneLoaded
并在那里执行激活。