Godot EditorScript将轨道路径中的".",批量修改为"_"
在unity中导入的anim,有时无法正确播放,这是因为godot的节点名称不支持.: @/^%,而unidot插件只修改了节点名称而没有修改anim中的

使用此EditorScript,右键运行,可以将轨道路径中的".",批量修改为"_"
@tool
extends EditorScript
func _run():
# ⭐ 1. 指定要处理的动画文件
var anim_path = "res://Assets/TheInvertedWorld/Scene1/Scene1.anim"
# ⭐ 2. 加载动画
var anim = load(anim_path) as Animation
if not anim:
print("加载失败")
return
# ⭐ 3. 遍历所有轨道(从后往前,避免索引问题)
for i in range(anim.get_track_count() - 1, -1, -1):
var old_path = str(anim.track_get_path(i))
# ⭐ 4. 核心功能:检查并替换 "." 为 "_"
if "." in old_path:
var new_path = old_path.replace(".", "_")
print("修改: %s -> %s" % [old_path, new_path])
# ⭐ 5. 备份轨道数据
var data = {
"type": anim.track_get_type(i),
"interp": anim.track_get_interpolation_type(i),
"enabled": anim.track_is_enabled(i),
"keys": []
}
for k in range(anim.track_get_key_count(i)):
data.keys.append({
"t": anim.track_get_key_time(i, k),
"v": anim.track_get_key_value(i, k),
"tr": anim.track_get_key_transition(i, k)
})
# ⭐ 6. 删除旧轨道,创建新轨道
anim.remove_track(i)
var idx = anim.add_track(data.type, i)
# ⭐ 7. 设置新路径(这里是关键!)
anim.track_set_path(idx, NodePath(new_path))
# ⭐ 8. 恢复属性和关键帧
anim.track_set_interpolation_type(idx, data.interp)
anim.track_set_enabled(idx, data.enabled)
for key in data.keys:
anim.track_insert_key(idx, key.t, key.v, key.tr)
# ⭐ 9. 保存文件
ResourceSaver.save(anim, anim_path)
print("完成!")


本文来自博客园,作者:meny,转载请注明原文链接:https://www.cnblogs.com/mmme/p/19345615

浙公网安备 33010602011771号