代码之家  ›  专栏  ›  技术社区  ›  nmw01223

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

  •  0
  • nmw01223  · 技术社区  · 6 年前

    在我的应用程序中,我想在特定场景启动时获得特定场景的列表及其构建索引。很可能所有场景都尚未加载。

    为了做到这一点,我试过了 SceneManager.GetSceneByName() -我有相关场景的名字。什么也没回来。

    看看这些文件,这似乎应该行得通。然而,看着相似的 GetSceneByIndex() 这确实说明它只适用于加载的场景,我假设——虽然它没有这么说——同样适用于加载的场景 GetSceneByName() .

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

    有没有办法做到这一点?

    0 回复  |  直到 6 年前
        1
  •  3
  •   derHugo    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);
    }
    

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

    scenes[i] = Path.GetFileNameWithoutExtension(SceneUtility.GetScenePathByBuildIndex(i));
    
    推荐文章