Unity - 无法列出项目中的所有场景

nmw*_*223 0 c# unity-game-engine scene-manager

在我的应用程序中,我想在特定场景启动时获取某些场景及其构建索引的列表。可能尚未加载任何场景。

为此我尝试过SceneManager.GetSceneByName()- 我有相关场景的名称。什么也没有回来。

查看文档似乎这应该可行。然而,看看类似的内容GetSceneByIndex()确实表明它仅适用于加载的场景,并且我假设 - 认为它没有这么说 - 这同样适用于GetSceneByName().

因此,我还没有找到一种方法来列出所有可用但可能尚未加载的场景。到目前为止,我已经对相关的构建索引进行了硬编码,但我不喜欢这样。

有办法做到这一点吗?

der*_*ugo 6

一般来说,您无法获得对Scene尚未加载的任何引用是有道理的。甚至使用SceneManager.GetSceneByBuildIndex状态

如果场景已添加到给定构建索引处的构建设置并且场景已加载,则此方法将返回有效的场景。如果尚未加载,SceneManager 无法返回有效的场景。


然而,您至少 可以SceneUtility.GetScenePathByBuildIndex通过迭代获得所有场景路径/名称SceneManager.sceneCountInBuildSettings

int sceneCount = SceneManager.sceneCountInBuildSettings;     
string[] scenes = new string[sceneCount];

for( int i = 0; i < sceneCount; i++ )
{
   scenes[i] = SceneUtility.GetScenePathByBuildIndex(i);
}
Run Code Online (Sandbox Code Playgroud)

这些将是完整的场景路径。如果您只想场景名称本身(但可能重复),您可能可以使用

scenes[i] = Path.GetFileNameWithoutExtension(SceneUtility.GetScenePathByBuildIndex(i));
Run Code Online (Sandbox Code Playgroud)