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

Unity - unable to list all scenes in a project

在我的应用程序中,我想在特定场景启动时获取特定场景的列表及其构建索引。大概率是none个场景还没有加载

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

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

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

有没有办法做到这一点?

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

This method will return a valid Scene if a Scene has been added to the build settings at the given build index AND the Scene is loaded. If it has not been loaded yet the SceneManager cannot return a valid Scene.


但是你可以得到的至少是所有场景paths/names通过使用SceneUtility.GetScenePathByBuildIndex by iterating over SceneManager.sceneCountInBuildSettings

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

for( int i = 0; i < sceneCount; i++ )
{
   scenes[i] = SceneUtility.GetScenePathByBuildIndex(i);
}

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

scenes[i] = Path.GetFileNameWithoutExtension(SceneUtility.GetScenePathByBuildIndex(i));