手把手带你入门 UE 编辑器自动化工具-5
可以不把参数写死在蓝图里:运行编辑器脚本函数时输入参数
前面我们在做 UE 编辑器工具脚本时,很多参数可能都是直接写在蓝图里的。
比如批量处理 Actor 时,前缀写死成Tree_;批量处理资产时,目标前缀写死成T_;批量修改物体的属性信息或者数量、路径、材质、命名规则等内容,都直接放在蓝图变量里。
这样做一开始很方便,脚本也能正常运行。但问题是,只要参数变了,就要重新打开蓝图,修改变量,编译,再运行。
如果只是临时脚本,这样没什么问题。但如果这个工具以后要反复使用,或者要给团队其他人用,这种方式就会很麻烦。
更好的方式是:把经常变化的内容做成函数输入参数,在运行脚本时弹出窗口填写。
这样蓝图逻辑不用反复改,只需要每次运行时输入不同参数即可。

1.为什么需要参数传入
编辑器工具的价值,不只是“能自动执行一段操作”,而是要尽量做成一个可复用的小工具。
比如同样是批量重命名,这次前缀是Tree_,下次可能是Rock_,再下次可能是Building_。
如果每次都进蓝图里改变量,工具就不够方便。
但如果运行时弹出一个参数窗口,让我们填写前缀、起始编号、编号位数等内容,那么同一个工具就可以适配更多情况。
核心变化就是:
以前:参数写死在蓝图里现在:参数在运行时输入
这就是参数传入最直接的意义:让编辑器脚本从一次性脚本,变成可配置的小工具。
2.案例一:批量随机化选中 Actor 的缩放
第一个案例处理场景里的 Actor。
在场景搭建时,经常会遇到这种情况:一批树、石头、箱子或者装饰物,如果大小完全一样,画面会显得很机械。
手动一个个调整缩放也可以,但数量一多就很浪费时间。
所以这次我们做一个简单工具:
选中一批 Actor,运行编辑器工具时输入随机缩放范围,然后自动给每个 Actor 设置一个随机缩放值。
实现流程可以分成几步:
1. 获取当前选中的 Actor
2. 判断是否有选中对象
3. 遍历每一个 Actor
4. 在 Min Scale 和 Max Scale 之间随机一个数值
5. 设置 Actor 的 Scale
创建ActorActionUtility,

运行脚本函数时:

比如运行时输入:
Min Scale = 0.8
Max Scale = 1.3
弹出参数弹窗,修改参数,点击确定。

脚本运行后,每个选中的 Actor 都会在0.8 - 1.3 之间随机一个缩放值。
随机缩放效果:

这个案例的重点不是随机缩放本身,而是参数传入的使用方式,设定脚本函数的参数
以前随机范围可能直接写死在蓝图里,每次想调整效果都要重新打开蓝图修改。现在把Min Scale 和Max Scale 做成函数输入参数,运行时填写即可。
这样同一个工具就可以用于不同场景:
草丛:0.8 - 1.2
石头:0.6 - 1.5
树木:0.9 - 1.3
装饰物:0.7 - 1.1
3.案例二:批量重命名选中的 Asset
第二个案例处理 Content Browser 里的资产。
我们要做的是:
选中一批资产,运行脚本时输入前缀,然后自动给资产批量添加前缀。
实现流程可以这样设计:
1. 获取 Content Browser 中选中的资产
2. 判断是否有选中资产
3. 遍历每一个资产
4. 拼接新的资产名称
5. 执行重命名
创建AssetActionUtility,脚本函数:
比如选中了几张贴图:
Quinn_01_D
Quinn_01_MRA
Quinn_01_N
右键运行脚本:重命名资产

运行工具时输入:
前缀Prefix = T_
弹出参数弹窗,填入参数,点击确定:

运行后变成:
T_Quinn_01_D
T_Quinn_01_MRA
T_Quinn_01_N
资产批量添加命名前缀了:

这个工具实际很适合整理项目资源。
比如贴图统一加T_ 前缀,材质统一加M_ 前缀,材质实例统一加MI_ 前缀,蓝图统一加BP_ 前缀。
如果前缀写死在蓝图里,就只能处理一种类型。把前缀做成运行时输入后,同一个工具就可以根据不同参数处理不同资产。
4、总结
这篇主要讲了编辑器工具蓝图中的参数传入。
它本身不复杂,但非常实用。
很多编辑器脚本一开始都是临时写的,参数直接写在蓝图里也能跑。但随着使用次数变多,就会发现每次改参数、编译、再运行很麻烦。
把参数暴露到运行窗口后,工具就更像一个真正的编辑器功能,而不是一次性的蓝图脚本。
这套方式不只适合批量设置Actor的tag,批量重命名 Asset,还可以用在很多地方:
批量重命名 Actor
批量移动 Actor 到指定 Folder
批量替换材质
批量创建材质实例
批量处理贴图命名
批量修改资产路径
批量修改资产属性
只要工具里有“经常变化的内容”,都可以考虑把它做成运行时输入参数。
下一篇我们继续做一个更偏工程化的小工具:
使用 C++ 将普通图片纹理一键转换为 UI 可用的纹理格式。
比如自动修改 Texture Group、Compression Settings、Mip Gen Settings 等参数,让导入的 UI 图片不用每次都手动设置。

夜雨聆风
