首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >EditorSceneManager在游戏模式测试中使用SceneManager

EditorSceneManager在游戏模式测试中使用SceneManager
EN

Stack Overflow用户
提问于 2020-12-02 09:33:28
回答 2查看 1.2K关注 0票数 1

我需要使用EditorSceneManager来加载游戏模式单元测试的场景。我需要使用这个,而不是SceneManager.Load,因为我不能在构建设置的场景。关于EditorSceneManager的文档很清楚,它应该能满足我的需要。

代码语言:javascript
运行
复制
    protected void LoadScene(string sceneName, Action onComplete)
    {
        if (string.IsNullOrEmpty(sceneName)) { Debug.LogError("Missing scene name"); return;}
        UnityEditor.SceneManagement.EditorSceneManager.LoadScene(sceneName);
        //...
    }

我得到的错误是场景没有在构建设置中,就像调用了SceneManager.LoadScene而不是编辑器版本一样。

编译器还建议简化为我不想使用的以下内容:

代码语言:javascript
运行
复制
 UnityEngine.SceneManagement.SceneManager.LoadScene(sceneName);

虽然我没有可能混淆代码的指令:

代码语言:javascript
运行
复制
using System;
using System.Collections;
using UnityEditor;
using UnityEngine;

我使用了一个附带的IPrebuildSetup、IPostBuildCleanup解决方案,通过AssetDatabase和EditorBuildSettingsScene添加/移除场景,它可以工作。但它也运行在Jenkins的场景加载/卸载过程,同时构建prod应用程序。我需要避免这种情况,因为它可能导致只在测试场景中使用的传输资产。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-02 10:12:48

EditorSceneManager继承自SceneManager,这就是为什么它提供了afaik所做的相同的方法LoadScene,这意味着EditorSceneManager不存在覆盖或类似的情况。

但是,它提供了可以而且应该用于编辑器特定内容的其他方法。

您可以使用LoadSceneInPlayMode

此方法允许您在编辑器()的播放模式下加载场景,而无需将场景包括在构建设置场景列表中。

代码语言:javascript
运行
复制
UnityEditor.SceneManagement.EditorSceneManager.LoadSceneInPlayMode(sceneName);

Note:该参数名为path,而不是sceneName,原因是;)

您必须提供路径,因为它存储在Scene.path中。

返回场景的相对路径。喜欢:"Assets/MyScenes/MyScene.unity"

票数 0
EN

Stack Overflow用户

发布于 2020-12-02 09:55:25

你应该写一个

代码语言:javascript
运行
复制
using UnityEngine.SceneManagement;

然后你就可以用

代码语言:javascript
运行
复制
SceneManager.LoadScene(sceneName);

应该是这样的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65105419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档