SceneManager 无法按名称获取场景

Ale*_*lig 4 unity-game-engine scene scene-manager

我的 Unity 项目中有 3 个场景,并试图通过其名称获取场景索引。我正在尝试使用SceneManager,但我不知道如何使用SceneManager.GetSceneByName。使用

SceneManager.GetSceneByName("Scene1");
Run Code Online (Sandbox Code Playgroud)

返回null,同时我可以使用加载场景

SceneManager.LoadScene("Scene1",LoadSceneMode.Single);
Run Code Online (Sandbox Code Playgroud)

当我有 3 个场景时, SceneManager.sceneCount也会返回1

Unity 文档GetSceneByName说:

在添加到 SceneManager 的场景中搜索具有给定名称的场景。

该名称必须不带 .unity 扩展名。该名称可以是 BuildSettings 窗口中显示的名称的最后一部分,在这种情况下,将返回第一个匹配的场景。该名称也可以是构建设置中显示的路径,但仍然没有扩展名,在这种情况下,只会返回完全匹配的内容。这是不区分大小写的。

这是否意味着我应该将所有场景添加到SceneManager第一个场景?

我怎样才能做到这一点?

如果是这样,那么为什么SceneManager.LoadScene()要使用场景名称而不将其添加到 中SceneManager

注意:我已经将所有 3 个场景添加到“构建”设置中。

gre*_*wan 6

该方法SceneManager.GetSceneByName()在已加载的场景列表中搜索场景。就 SceneManager.sceneCount 而言,它的统一文档明确指出它返回:

当前加载的场景数

为了找出构建设置中的场景数量,有一个单独的变量SceneManager.sceneCountInBuildSettings

SceneManager.GetSceneByName()如果在附加模式下加载场景后使用, 则会返回有效场景。