编辑器批处理脚本总是又长又烦?这类活真的很适合先让 AI 打个底

Unity 编辑器里有一类脚本,技术含量未必最高,但特别容易又长又碎。

比如批量做这些事:

  • 改一批资源导入设置
  • 批量替换组件字段
  • 统一 prefab 某个默认值
  • 扫一遍场景把老组件换成新组件

这类脚本最典型的特点就是:

你不难想到思路。

但真要手写,特别容易拖。

AI 在这里很合适。

一、为什么批处理脚本适合 AI 起稿

因为它通常具备:

  • 输入清楚
  • 操作步骤明确
  • 样板代码多
  • 容易人工复核

你要做的,本来就不是让 AI 发挥创意。

而是让它先把 AssetDatabase、Selection、Undo、批量遍历这些机械部分搭起来。

二、一个实用提示词例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
你是资深 Unity 编辑器工具工程师。
请帮我写一个批处理脚本。

目标:
1. 扫描当前选中的 prefab。
2. 找到其中所有 Text 组件。
3. 把 raycastTarget 统一设为 false。
4. 支持 Undo。
5. 修改后标记资源 dirty。

要求:
1. 提供菜单入口。
2. 代码拆成扫描、修改两个方法。
3. 先给完整代码,再说明边界风险。

三、一个适合起步的代码壳子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;

public static class BatchDisableTextRaycast
{
[MenuItem("Tools/UI/Batch Disable Text Raycast")]
public static void Execute()
{
foreach (var obj in Selection.objects)
{
var path = AssetDatabase.GetAssetPath(obj);
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(path);
if (prefab == null)
{
continue;
}

var texts = prefab.GetComponentsInChildren<Text>(true);
foreach (var text in texts)
{
Undo.RecordObject(text, "Disable Text Raycast");
text.raycastTarget = false;
EditorUtility.SetDirty(text);
}
}
}
}

四、最后一句

编辑器批处理脚本这种活,很典型地属于“人人都知道该做,但很容易被拖着不做”。

让 AI 先把 60 分版本起出来,再由人收边界,通常性价比很高。