如何从构建设置中删除已删除的场景

时间:2019-07-14 13:53:11

标签: unity3d

enter image description here添加场景以建立设置然后将其删除后,仍然显示已删除的场景。问题在于其影响场景数量。它们都显示为有效场景,即使它说已删除。突出显示所有内容,然后选择“删除选择”无济于事。

EditorBuildSettingsScene[] scenes = EditorBuildSettings.scenes;
Debug.Log(scenes.Length);

此日志语句返回所有场景,甚至删除的场景。

3 个答案:

答案 0 :(得分:0)

为这篇文章感到抱歉,但是在混乱之后,我注意到如果我继续点击删除选择,实际上就是在删除它们。问题是我在构建窗口中删除了很多场景,当我点击删除选择并突出显示所有场景时,一次只能删除其中一个。因此,似乎没有任何反应。我想统一没有能力选择所有>删除所有选择。相反,它们是一个接一个地完成的。

答案 1 :(得分:0)

您可以过滤掉所有具有EditorBuildSettingsScene之类的File.Exists(scenePath) = false

using System.IO;
using System.Linq;
using UnityEditor;

public static class EditorBuildSettingsTools
{
    [MenuItem("CustomBuildTools/RemoveDeletedScenes")]
    public static void CleanUpDeletedScenes()
    {
        var currentScenes = EditorBuildSettings.scenes;
        var filteredScenes = currentScenes.Where(ebss => File.Exists(ebss.path)).ToArray();
        EditorBuildSettings.scenes = filteredScenes;
    }
}

将其放置在名为Editor的文件夹中,以便将其从构建中排除,例如喜欢

Assets/Editor/EditorBuildSettingsTools.cs

答案 2 :(得分:0)

derhug 的解决方案似乎不起作用。例如,当您通过包含场景的脚本删除文件夹并调用方法CleanUpDeletedScenes时,文件场景位于同一帧中,因为它位于缓存中。我建议使用方法AssetDatabase.LoadAssetAtPath检查是否存在场景文件:

public static void CleanUpDeletedScenes() {
   currentScenes = EditorBuildSettings.scenes;
   var filteredScenes = currentScenes.Where(ebss => AssetDatabase.LoadAssetAtPath(ebss.path, typeof(SceneAsset)) != null).ToArray();
}