如何通过编程向Animation Player(GUI工具)添加/批量加载.tres动画?
批量向Animation Player GUI添加.tres动画资源的实现方法
核心逻辑
要实现编辑器GUI里加载按钮的等效功能,得用Godot的编辑器API写编辑器脚本,直接操作Animation Player的动画库,和编辑器原生加载逻辑完全一致。
具体实现代码
创建一个后缀为.gd的编辑器脚本,代码如下:
@tool extends EditorScript func _run(): # 获取当前选中的Animation Player节点 var selected_nodes = EditorSelection.get_singleton().get_selected_nodes() if selected_nodes.empty() or not selected_nodes[0] is AnimationPlayer: print("请先选中一个Animation Player节点") return var anim_player = selected_nodes[0] as AnimationPlayer # 替换成你的.tres动画存放目录 var anim_dir = "res://animations/" var dir = Directory.new() if not dir.open(anim_dir): print("打不开目标目录: ", anim_dir) return dir.list_dir_begin(true, true) var file_name = dir.get_next() while file_name != "": if file_name.ends_with(".tres"): var anim_path = anim_dir + file_name var animation = load(anim_path) if animation is Animation: var anim_name = file_name.get_basename() # 避免覆盖已存在的动画 if anim_player.has_animation(anim_name): print("跳过已存在的动画: ", anim_name) file_name = dir.get_next() continue # 添加动画到Animation Player,会直接显示在GUI面板里 anim_player.add_animation(anim_name, animation) print("已添加动画: ", anim_name) file_name = dir.get_next() dir.list_dir_end() print("批量添加完成")
使用步骤
- 把脚本保存为
BatchAddAnimations.gd - 在Godot编辑器里,选中场景中的Animation Player节点
- 点击顶部菜单的
Script > Run Editor Script,选择刚才保存的脚本即可
注意事项
- 脚本里的
anim_dir要改成你实际存放.tres动画的目录路径 - 如果想遍历子目录,保持
dir.list_dir_begin(true, true)的参数即可(第二个true表示包含子目录) - 代码里做了重名检查,避免覆盖已有的动画,你也可以改成自动给重名动画加后缀(比如
anim_name_1)
内容的提问来源于stack exchange,提问作者allingfin
相关产品推荐
相关产品推荐

