教程地址:Unreal Engine Automation - Creating a Python Batch Rename Script
很棒的一套教程,感谢下老师!
上一篇我们用python和unreal打了招呼 -https://blog.csdn.net/weixin_44517539/article/details/118767840
接下来,要熟悉下unreal库的使用
import unreal
def rename_assets():
# 实例化unreal类
system_lib = unreal.SystemLibrary() # 实例化系统类
editor_util = unreal.EditorUtilityLibrary() # 实例化编辑类
string_lib = unreal.StringLibrary() # 实例化字符类
# get the selected assets
selected_assets = editor_util.get_selected_assets() # 获取选中对象
num_assets = len(selected_assets) # 计算选中数量
unreal.log("Selected {} assets".format(num_assets)) # 反馈选中数量
rename_assets()
上面这里通过反馈选中数量熟悉了下unreal库的操作,上手舒适
接下来继续做了一个循环,来获取每个对象的名称
import unreal
def rename_assets():
# 实例化unreal类
system_lib = unreal.SystemLibrary() # 实例化系统类
editor_util = unreal.EditorUtilityLibrary() # 实例化编辑类
string_lib = unreal.StringLibrary() # 实例化字符类
# get the selected assets
selected_assets = editor_util.get_selected_assets() # 获取选中对象
num_assets = len(selected_assets) # 计算选中数量
unreal.log("Selected {} assets".format(num_assets)) # 反馈选中数量
# 遍历每个对象并重命名
for asset in selected_assets: # 遍历每个对象
asset_name = system_lib.get_object_name(asset) # 获取对象名称
unreal.log(asset_name) # 输出对象名称
rename_assets()
Log跟踪正常!
接下来是最实际的操作,替换对象名称
import unreal
def rename_assets(search_pattern, replace_pattern): # 参数输入被替换的字符和替换的字符
# 实例化unreal类
system_lib = unreal.SystemLibrary() # 实例化系统类
editor_util = unreal.EditorUtilityLibrary() # 实例化编辑类
string_lib = unreal.StringLibrary() # 实例化字符类
# get the selected assets
selected_assets = editor_util.get_selected_assets() # 获取选中对象
num_assets = len(selected_assets) # 计算选中数量
replaced = 0
unreal.log("Selected {} assets".format(num_assets)) # 反馈选中数量
# 遍历每个对象并重命名
for asset in selected_assets: # 遍历每个对象
asset_name = system_lib.get_object_name(asset) # 获取对象名称
# 判断对象名称中是否包含要被替代的字符
if string_lib.contains(asset_name, search_pattern, use_case=False): # 第三个参数不理解,回头可以测试下
# replaced_name = string_lib.replace(asset_name, search_pattern, replace_pattern) # 字符串替换处理,这里也可以直接使用自带的replace方法
editor_util.rename_asset(asset, asset_name.replace(search_pattern, replace_pattern)) # 重命名操作
replaced += 1 # 记数
unreal.log("Replaced {} with {}".format(asset_name, replace_pattern)) # 输出替换信息
else:
unreal.log("{} did not match the search pattern,was skipped".format(asset_name)) # 输出名称不匹配
unreal.log("Replaced {} of {} assets".format(replaced, num_assets)) # 输出对象名称
rename_assets("Lava", "Water")
我宣布,本次批量重命名工作,获得圆满胜利!(此处掌声经久不衰)
继续努力,乾杯!