You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为层级面板中doors对象的所有子物体批量添加door.cs脚本组件

批量为子物体添加指定脚本组件(Unity编辑器实现)

要实现无需手动操作,给层级面板中doors对象的所有子物体批量添加door.cs脚本,你可以写一个编辑器工具脚本来完成这个任务,步骤如下:

  • 创建一个名为Editor的文件夹(如果没有的话),所有编辑器脚本必须放在这个文件夹下才能生效
  • 在Editor文件夹中新建C#脚本,命名为AddDoorScriptBatch.cs,粘贴以下代码:
using UnityEditor;
using UnityEngine;

public class AddDoorScriptBatch : EditorWindow
{
    [MenuItem("Tools/批量添加Door脚本")]
    public static void ShowWindow()
    {
        GetWindow<AddDoorScriptBatch>("批量加Door脚本");
    }

    private void OnGUI()
    {
        if (GUILayout.Button("为doors的所有子物体添加door.cs"))
        {
            // 查找层级面板中的doors对象
            GameObject doorsParent = GameObject.Find("doors");
            if (doorsParent == null)
            {
                Debug.LogError("层级面板中未找到名为doors的对象");
                return;
            }

            // 遍历所有子物体
            foreach (Transform child in doorsParent.transform)
            {
                // 检查是否已经有door组件,避免重复添加
                Door doorComp = child.GetComponent<Door>();
                if (doorComp == null)
                {
                    child.gameObject.AddComponent<Door>();
                    Debug.Log($"已为{child.name}添加door.cs组件");
                }
                else
                {
                    Debug.Log($"{child.name}已经存在door.cs组件,跳过");
                }
            }

            Debug.Log("批量添加操作完成");
        }

        GUILayout.Space(10);
        GUILayout.Label("或者选择目标父物体后点击下方按钮:");
        if (GUILayout.Button("为选中物体的所有子物体添加door.cs"))
        {
            if (Selection.activeGameObject == null)
            {
                Debug.LogError("请先在层级面板中选中父物体");
                return;
            }

            foreach (Transform child in Selection.activeGameObject.transform)
            {
                Door doorComp = child.GetComponent<Door>();
                if (doorComp == null)
                {
                    child.gameObject.AddComponent<Door>();
                    Debug.Log($"已为{child.name}添加door.cs组件");
                }
                else
                {
                    Debug.Log($"{child.name}已经存在door.cs组件,跳过");
                }
            }

            Debug.Log("批量添加操作完成");
        }
    }
}
  • 编写完成后回到Unity编辑器,顶部菜单栏会出现Tools选项,点击其中的批量添加Door脚本
  • 在弹出的窗口中,点击第一个按钮即可自动为doors对象的所有子物体添加door.cs;如果后续需要给其他父物体的子物体添加,选中目标父物体后点击第二个按钮即可

注意事项:

  • 确保door.cs脚本的类名是Door(如果你的类名不是这个,记得把代码中的Door改成对应类名)
  • 编辑器脚本只会在Unity编辑器环境中运行,不会打包到游戏里
  • 执行前可以先备份场景,避免意外情况

内容的提问来源于stack exchange,提问作者Xaver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:32:45