手把手带你入门 UE 编辑器自动化工具-3:给脚本加一个界面[Editor Utility Widget]

Editor Utility Widget
在前两篇文章中,我们分别介绍了两类编辑器自动化工具:
-
• 资产编辑器脚本:处理项目资源,例如批量重命名、修改贴图压缩设置、创建资源等。 -
• Actor 编辑器脚本:处理关卡对象,例如批量摆放、设置属性、控制显隐、修改组件参数等。
如果工具只需要执行一两个简单操作,一个脚本按钮或右键菜单通常就够用了。
但随着项目不断推进,我们很容易遇到更复杂的需求:
-
• 执行脚本前,需要输入保存目录、资源前缀等参数; -
• 需要通过复选框决定是否启用法线贴图、自动保存或覆盖旧资源; -
• 希望把多个常用脚本整合到同一个工具面板中; -
• 希望在执行结束后看到成功数量、失败原因等反馈信息。
这时,就可以使用本文要介绍的 编辑器工具控件(Editor Utility Widget)。
Tip
Editor Utility Widget 可以理解为运行在 UE 编辑器中的“小工具 UI 面板”。它面向开发者、策划、美术和 TA,而不是游戏运行时的玩家。
借助它,我们可以把原本孤立的脚本按钮,升级成包含输入框、路径选择、复选框、下拉选项和执行日志的完整工具窗口。

🎯 一、编辑器工具控件适合做什么?
我更愿意把 Editor Utility Widget 理解为:将脚本做成可交互的工具面板。
它尤其适合以下几类场景。
1. 为脚本增加操作界面
有些脚本逻辑本身并不复杂,但做成界面后会更方便使用。
例如,我们可以制作一个 Actor 重命名工具:读取 Actor Tag,并通过按钮将 Tag 自动加入 Actor 名称中。使用者只需要选中对象并点击按钮,无须关心脚本的具体实现。
2. 处理不直接依附于资产或 Actor 的功能
如果工具并非单纯处理某个资产或当前选中的 Actor,而是依赖外部路径、文件或参数,Editor Utility Widget 会非常合适。
例如,根据外部文件生成 Actor 时,文件路径经常变化。把路径输入框放在工具界面中,会比每次修改脚本内容灵活得多。
3. 集中管理多个输入参数
当脚本同时需要路径、文本、开关和命名规则等参数时,使用控件统一管理会更加清晰,也能减少反复修改脚本内容带来的错误。
4. 整合多个常用工具
项目中常常会积累很多小脚本,例如:
扫描贴图;生成材质实例;检查资源命名;批量重命名资源;清空或导出日志。
把这些功能集中到一个工具面板中,可以统一入口,让使用者不必到处寻找脚本。
✨ 二、为什么要使用编辑器工具控件?
Editor Utility Widget 最大的价值,是让编辑器脚本从“能用”进一步变成“好用”。
1. 降低使用门槛,让操作更标准
如果只有脚本,使用者需要了解脚本的位置、参数修改方式和执行顺序。制作成工具界面后,美术、策划或场景编辑人员只需要根据按钮和输入框完成操作。
常用路径、命名规则和开关参数也可以统一放在界面中,从而减少路径填错、前缀漏写和规则不一致等问题。
2. 集中管理多个脚本
批量重命名、设置材质、检查资源和生成实例等功能,都可以整理到同一个 UI 面板中。工具入口更统一,日常使用也更高效。
3. 方便持续扩展
工具最初可能只有一个按钮,后续可以逐步加入:
-
• 参数输入、路径选择、日志输出、配置保存、执行进度、错误提示。
随着功能完善,一个简单面板也可以逐渐成长为团队内部常用的编辑器工具。
🚀 三、快速入门:创建第一个编辑器工具控件
下面通过一个简单的批量重命名工具,了解 Editor Utility Widget 的基本使用流程。
第一步:创建 Editor Utility Widget
在内容浏览器中右键,依次选择:
编辑器工具(Editor Utilities) → 编辑器工具控件(Editor Utility Widget)

选择一个合适的父类:

创建完成后,就可以自由设计 UI:

如果右键菜单中没有相关选项,请先检查项目是否启用了编辑器脚本相关插件。
Editor Utility Widget 本质上仍然是一个 Widget 蓝图,但它并不用于游戏运行时,而是作为编辑器中的工具界面运行。
第二步:设计工具界面
打开 Widget 后,可以像制作普通 UMG 界面一样拖入控件。
例如,我们可以先制作一个简单的批量重命名工具:
-
• 一个输入框:填写资源前缀; -
• 一个按钮:执行批量重命名; -
• 一个文本区域:显示执行结果。

这就是一个最基础的编辑器工具控件。
第三步:为按钮绑定功能
选中按钮并添加点击事件,然后编写对应的处理逻辑。
与普通 UMG 控件蓝图相比,编辑器工具控件还可以调用很多与编辑器相关的功能,例如:
-
• 获取内容浏览器中选中的资产; -
• 获取关卡中选中的 Actor; -
• 修改资产名称; -
• 获取编辑器子系统; -
• 在编辑器中生成或选择 Actor。
本例的执行逻辑如下:
-
1. 获取内容浏览器中选中的资产; -
2. 遍历资产,读取当前名称并添加输入的前缀; -
3. 重命名资产并输出执行结果。

第四步:运行工具控件
创建完成后,可以在内容浏览器中右键运行 Editor Utility Widget,也可以通过编辑器菜单打开它。
运行后,工具会以编辑器窗口的形式出现。窗口既可以停靠在编辑器中,也可以单独浮动。

它不是游戏内 UI,而是一个可以长期保持打开的编辑器工作面板。我们可以一边编辑资源,一边使用其中的工具功能。
第五步:执行并查看反馈
输入参数并点击按钮后,工具会自动完成处理,并把执行结果反馈到界面中。


🧪 四、两个实用案例
掌握基础流程后,我们再来看两个适合使用 Editor Utility Widget 的常见场景。
案例一:一键选中符合条件的 Actor
编辑器工具控件不仅可以处理资产,也非常适合制作场景筛选工具。
例如,我们希望制作一个按钮:在当前关卡中,一键选中所有移动性为 固定 的 StaticMeshActor。
1. 制作简单界面
创建一个编辑器工具控件,并在界面中放入一个按钮:
选中固定 StaticMeshActor
使用者无须寻找或理解脚本,只需点击按钮即可完成筛选。

2. 编写筛选逻辑
在按钮点击事件中:
-
1. 遍历当前关卡中的 Actor; -
2. 判断 Actor 是否为 StaticMeshActor; -
3. 继续判断其移动性是否为 固定; -
4. 将符合条件的 Actor 加入待选中列表; -
5. 更新编辑器中的选中对象。

3. 运行工具并反馈结果
运行工具后点击按钮,符合条件的 Actor 会自动在大纲中被选中,同时可以在日志中输出:
✅ 已选中 3 个固定 StaticMeshActor。


-
• 选中某个蓝图参数为指定值的 Actor; -
• 选中使用指定材质的 Actor; -
• 选中带有某个 Tag 的 Actor; -
• 选中名称包含某个关键字的 Actor。
很多重复的“查找、筛选、选中、批处理”操作,都可以整理成工具面板中的快捷按钮。
案例二:根据 CSV 文件批量生成 Actor
第二个案例是制作一个“根据 CSV 文件生成 Actor”的工具。
这个案例很适合体现编辑器工具控件的价值:它既不只是处理某个资产,也不是单纯操作当前选中的 Actor,而是需要输入外部文件路径,再根据文件内容在场景中批量创建对象。
CSV 内容示例:

1. 设计工具界面
界面中可以放入以下控件:
-
• CSV 文件路径输入框; -
• “生成 Actor”按钮; -
• 执行日志显示区域。 
2. 编写执行逻辑
本例使用 Blueprint File SDK 插件读取文件,整体逻辑如下:
-
1. 根据输入路径读取 CSV 内容; -
2. 解析位置X、Y、Z字段; -
3. 根据数据在关卡中生成对应 Actor; -
4. 统计成功生成的Actors数量; -
5. 将结果显示在日志区域。 
3. 执行并显示结果
使用时,只需要输入 CSV 文件路径,然后点击“生成 Actor”按钮。脚本会读取 CSV 中的数据,并在关卡中批量生成对应 Actor。
执行完成后,可以在日志中显示类似信息:
✅ 已读取 30 条数据,成功生成 30 个 Actor。


这个案例的重点不在 CSV 本身,而在于说明:
Important
当工具需要外部路径、多个参数和执行反馈时,Editor Utility Widget 通常会比单独脚本更直观,也更适合交给团队中的其他成员使用。
⚠️ 五、制作编辑器工具时的注意事项
Editor Utility Widget 很方便,但在真实项目中使用时,还需要注意以下几点。
1. 从简单功能开始,逐步扩展
不要一开始就把界面设计得过于复杂。建议先用一个按钮跑通核心逻辑,再逐步增加输入框、路径选择、日志和配置保存等功能。
工具开发的重点是先解决问题,再完善体验。
2. 为参数提供合理的默认值
如果工具需要交给美术或其他同事使用,输入框最好不要全部留空。
可以提前设置默认路径、默认前缀、默认命名规则和默认勾选状态,让使用者打开工具后就能快速理解如何操作。
3. 一定要提供执行反馈
批量处理资产或 Actor 时,建议明确显示:
-
扫描了多少对象;成功处理了多少对象;跳过了多少对象;有多少操作失败;失败的具体原因。
缺少反馈的批处理工具,很容易让使用者怀疑操作是否真正执行成功。
4. 危险操作需要二次确认
批量删除、覆盖、重命名和移动资源等操作,最好先提供扫描或预览结果,再让使用者确认执行,避免一次误操作改动大量资源。
Warning
对资源进行批量修改前,尽量支持撤销、预览或二次确认,并清晰提示操作影响范围。
5. 尽量分离 UI 与业务逻辑
简单工具可以直接把逻辑写在 Widget 中。
当功能逐渐复杂后,建议把具体处理逻辑封装到蓝图函数库、编辑器子系统或 C++ 类中。Widget 只负责读取参数、调用功能和显示结果,后续维护与扩展会更加方便。
🧭 六、可以继续进阶的方向
Editor Utility Widget 只是工具入口。掌握基础用法后,还可以继续向以下方向扩展。
1. 保存常用配置与预设
对于经常变化、但会重复使用的参数,可以将它们保存为配置或预设。
例如:
-
• 灯光工具中的暖光、冷光和夜景光配置; -
• 资源工具中的默认路径和命名规则; -
• 批处理工具中的常用勾选项状态。
下次打开工具时,使用者可以直接加载预设,无须重新填写。
2. 整理为团队内部工具插件
当工具数量越来越多时,可以按照功能整理成团队内部插件,例如:
-
• 资源处理工具;场景编辑工具;材质生成工具;数据导入工具。
这样既方便统一分发与版本管理,也能让团队成员使用同一套标准流程。
3. 增加更完整的辅助功能
后续还可以加入:
-
• 资产检查、批量处理、常用命令行入口、资源预览、进度显示、错误定位与修复建议。
例如,扫描贴图是否缺少法线、检查资源命名是否规范,或批量执行导入命令。随着功能不断完善,工具面板会从“执行脚本的入口”逐渐变成完整的编辑器生产工具。
💡 七、总结与下篇预告
通过 Editor Utility Widget,我们可以把零散的编辑器脚本整理为可交互的工具面板。
它非常适合用于:
-
• 参数输入;径选择;按钮集合;日志反馈;批量流程控制。
相比单独执行脚本,工具控件具有以下优势:
-
• 使用门槛更低:打开面板、填写参数、点击按钮即可执行; -
• 操作流程更标准:统一参数、路径与命名规则; -
• 扩展维护更方便:可以逐步加入日志、预设、进度和错误提示。
对于美术、策划和场景编辑人员来说,一个设计清晰的工具面板,可以显著减少重复操作和沟通成本。
🔜 下篇预告
下一篇将制作一个更加完整的实战工具:
选中多套贴图后,自动生成对应的多个材质实例。
工具会自动识别名称中包含 BaseColor、Normal、AO、Roughness 等标记的贴图,生成对应的 MI_XXX 材质实例,并自动完成贴图赋值。
特点是:创建UE资产、修改资产参数、从纹理生成材质
大家平时在 UE 里最讨厌的重复劳动是什么?可以公众号留言私信或者添加微:qingdoushashou 告诉我,后续我抽一个写教程。
觉得好的话点个赞吧
希望你能在这里学到点东西,每天进步一点点
扫描二维码关注账号:

以上内容在多平台同步发布:
-
1.知乎:旺仔好喝-黄河
-
2.公众号:UE5研究院
-
3.ima知识库:虚幻引擎UE成长之路
夜雨聆风