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

Godot 4中如何等待Tween动画完成?

在Godot 4中实现等待Tween动画完成的效果

在Godot 4中,Tween不再以常驻节点形式使用,而是按需动态创建。要实现和Godot 3.1中tween_completed相同的等待动画完成效果,可按以下方式操作:

基础实现:直接等待动态创建的Tween信号

  1. 创建并保存Tween实例
    在需要执行动画的代码中,调用create_tween()生成Tween对象并保存引用:

    # 示例:在current_screen的脚本内创建Tween
    var tween = create_tween()
    
  2. 添加动画逻辑
    通过保存的Tween实例绑定动画属性:

    # 示例:让current_screen在1秒内移动到目标位置
    tween.tween_property(self, "position", Vector2(100, 100), 1.0)
    
  3. 等待动画完成
    使用await等待该Tween实例的finished信号,作用等同于旧版的tween_completed:

    await tween.finished
    # 动画完成后执行后续逻辑
    

跨脚本等待的实现

如果需要在外部脚本中等待current_screen内创建的Tween完成,可通过以下两种方式实现:

方式1:暴露返回信号的方法

在current_screen的脚本中定义一个方法,返回Tween的finished信号:

# current_screen的脚本
func play_move_animation() -> Signal:
    var tween = create_tween()
    tween.tween_property(self, "position", Vector2(100, 100), 1.0)
    return tween.finished

外部脚本中直接等待该方法返回的信号:

await current_screen.play_move_animation()
# 动画完成后执行后续逻辑

方式2:自定义完成信号

在current_screen的脚本中定义自定义信号,动画完成时触发:

# current_screen的脚本
signal screen_animation_finished

func play_move_animation():
    var tween = create_tween()
    tween.tween_property(self, "position", Vector2(100, 100), 1.0)
    await tween.finished
    emit_signal("screen_animation_finished")

外部脚本中监听这个自定义信号:

await current_screen.screen_animation_finished
# 动画完成后执行后续逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:52:33