You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot中如何在AnimationPlayer添加关键帧时调用自定义函数

问题结论

该需求可以直接实现,不需要额外编写复杂的检测逻辑,Godot引擎已经提供了对应的内置信号支持该功能。

具体实现方式

你预期的关键帧新增触发回调的逻辑,直接绑定AnimationPlayer自带的animation_key_added信号即可。该信号触发时会传递三个参数:当前操作的动画名称、关键帧所在轨道索引、新增关键帧的索引,和你预期的参数逻辑完全匹配。
不管是在编辑器内手动插入关键帧,还是运行时通过代码调用API新增关键帧,只要关键帧添加成功,绑定的回调函数就会自动执行。

Godot 4.x 参考实现代码:

extends AnimationPlayer

func _ready():
    # 连接内置信号到自定义处理函数
    animation_key_added.connect(_on_animation_key_added)

func _on_animation_key_added(anim_name: StringName, track_indx: int, key_indx: int):
    print("key added: ", key_indx, " to track: ", track_indx)
    # 此处编写关键帧新增后需要执行的自定义逻辑
补充注意事项
  • 信号比你预期的多返回第一个anim_name参数,用来标识关键帧属于哪个动画资源,不需要的话可以直接忽略,不影响其余参数的使用。
  • 如果你使用的是Godot 3.x版本,没有直接暴露animation_key_added信号,可以给每个动画资源绑定tracks_changed信号,通过对比前后轨道关键帧数量的方式判断是否有新增关键帧。
  • 如果需要在编辑器非运行状态下添加关键帧时也触发回调,在脚本最顶部加上@tool(Godot 4)/tool(Godot 3)声明即可,注意工具脚本不要写会误改项目资源的逻辑。

内容的提问来源于stack exchange,提问作者cak3_lover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:03:23