前言
大家好,我是Mark。在2025年的开篇博客中,祝大家新年快乐 (。ì _ í。) 在闲暇之余也出了一篇AI文生图教程,如果你对其感兴趣欢迎观看并提出宝贵意见。当然它是免费的~ 【实战篇】Unity 结合 ComfyUI 实现AI文生图 | Unity 中文课堂 广子打完回归正文,在Unity开发过程中,将场景文件添加到BuildSettings是必不可少的步骤。通常,我们通过拖拽或点击“Add Open Scenes”来添加场景,但这两种方法都存在一定的不足,且操作上不够优雅。本文将分享一种在开发中使用的编辑器扩展技巧,以优化这一过程。
一、最终效果

二、示例代码
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using System.Linq;
public class AddSceneToBuildSettings : Editor
{
// 添加菜单项到右键菜单
[MenuItem("Assets/Add Scene to Build Settings")]
private static void AddSelectedScenesToBuildSettings()
{ // 获取所有选中的对象
Object[] selectedObjects = Selection.objects;
// 过滤出选中的场景文件
var sceneAssets = selectedObjects
.Where(obj => obj is SceneAsset) // 只处理类型为 SceneAsset 的对象(即场景文件)
.Select(AssetDatabase.GetAssetPath) // 获取场景文件的路径
.ToArray(); // 将结果转换为数组
// 如果没有选中任何场景文件,提示警告并退出
if (sceneAssets.Length == 0)
{ Debug.LogWarning("No scene files selected. Please select one or more scene files.");
return;
}
// 获取当前的 Build Settings 场景列表,并转换为 List 以便修改
var buildScenes = EditorBuildSettings.scenes.ToList();
// 遍历选中的场景文件
foreach (var scenePath in sceneAssets)
{ // 检查场景是否已经存在于 Build Settings 中
bool sceneAlreadyInBuild = buildScenes.Any(scene => scene.path == scenePath);
// 如果场景不在 Build Settings 中,则添加
if (!sceneAlreadyInBuild)
{ // 创建一个新的 EditorBuildSettingsScene 对象,并将其添加到列表中
buildScenes.Add(new EditorBuildSettingsScene(scenePath, true));
Debug.Log("Scene added to Build Settings: " + scenePath);
} else
{
// 如果场景已经存在于 Build Settings 中,提示警告
Debug.LogWarning("Scene already in Build Settings: " + scenePath);
} }
// 更新 Build Settings 的场景列表
EditorBuildSettings.scenes = buildScenes.ToArray();
}
// 验证菜单项是否可用
[MenuItem("Assets/Add Scene to Build Settings", true)]
private static bool ValidateAddSelectedScenesToBuildSettings()
{ // 只有在选中至少一个场景文件时才启用菜单项
return Selection.objects.Any(obj => obj is SceneAsset);
}}
#endif
三、结束
今日分享结束~
对你有帮助的话可以点赞、关注、收藏,有问题评论区见哈~
原创不易,若转载请注明出处,感谢大家~