Godot 4中如何等待Tween动画完成?
在Godot 4中实现等待Tween动画完成的效果
在Godot 4中,Tween不再以常驻节点形式使用,而是按需动态创建。要实现和Godot 3.1中tween_completed相同的等待动画完成效果,可按以下方式操作:
基础实现:直接等待动态创建的Tween信号
创建并保存Tween实例
在需要执行动画的代码中,调用create_tween()生成Tween对象并保存引用:# 示例:在current_screen的脚本内创建Tween var tween = create_tween()添加动画逻辑
通过保存的Tween实例绑定动画属性:# 示例:让current_screen在1秒内移动到目标位置 tween.tween_property(self, "position", Vector2(100, 100), 1.0)等待动画完成
使用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
相关产品推荐
相关产品推荐

