添加场景以建立设置然后将其删除后,仍然显示已删除的场景。问题在于其影响场景数量。它们都显示为有效场景,即使它说已删除。突出显示所有内容,然后选择“删除选择”无济于事。
EditorBuildSettingsScene[] scenes = EditorBuildSettings.scenes;
Debug.Log(scenes.Length);
此日志语句返回所有场景,甚至删除的场景。
答案 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();
}