用途:面向 Godot 4.3+(不使用已废弃 API)的补间动画实践参考,先给 GDScript 再给 C# 示例。适合程序化运动、UI 过渡、VFX 时序;与 AnimationPlayer 的关键帧动画区分:Tween 由代码创建、一次性、轻量,同一属性同时只能有一个补间;AnimationPlayer 适合可复用的美术驱动多轨动画,且 AnimationTree 支持混合。
主要能力:create_tween() 由任意 Node 创建并自动绑定,节点释放后自动停止;每个 create_tween() 都是新补间,同一属性上的旧补间不会自动终止,会相互竞争,需要时先 kill()。支持 tween_property()(含 "position:x"、"modulate:a" 等子属性写法)、tween_callback()、tween_interval()、tween_method()。默认串行执行,可用 set_parallel(true) 全部并行、chain() 切回串行、parallel() 让下一个补间与上一个并行。缓动可整体设置 set_trans()/set_ease(),也可对单个 PropertyTweener 覆盖;常见组合为 TRANS_CUBIC + EASE_OUT。PropertyTweener 支持 .from()、.from_current()、.as_relative()、.set_delay()。支持 set_loops(N)(0 为无限)及 finished、step_finished(idx)、loop_finished(loop_count) 信号。运行时可 kill()、set_pause_mode、set_speed_scale、set_ignore_time_scale。Godot 4.7+ 可用 has_tweeners() 判断补间是否为空,为空时提前 kill 可避免错误。
使用方式:按官方资料中的示例调用上述 API,实现淡入淡出、UI 面板滑入滑出、按钮按压弹跳、伤害数字弹出、脉冲呼吸、屏幕震动、着色器参数动画等配方。
限制与注意:多补间争抢同一属性会抖动,需先终止旧补间;节点在补间完成前被释放会导致无效;默认暂停模式可能不匹配预期,需设置 TWEEN_PAUSE_PROCESS;from() 应在 PropertyTweener 上调用;循环补间用绝对目标值以避免 as_relative() 逐圈累积漂移;Engine.time_scale 会影响补间,慢动作下的 UI 补间可用 set_ignore_time_scale();回调若被加入并行段会在错误时机触发,需先用 chain() 切回串行。其余细节(如循环次数语义与信号连接、完整配方代码)在引用文档中,此处不展开。