0

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

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

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

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

有没有办法做到这一点?

4

1 回答 1

3

Scene一般来说,您无法获得对尚未加载的 a 的任何引用是有道理的。即使使用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);
}

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

scenes[i] = Path.GetFileNameWithoutExtension(SceneUtility.GetScenePathByBuildIndex(i));
于 2020-07-04T14:55:15.360 回答