extends Tween class_name ArrayTween var index = 0 var values : Array # 单个节点动画时间 export var duration: float = 1.0 # 动画步进回调 signal array_value_step(step) # 所有节点动画播放完成 signal array_completed func _ready(): connect("tween_completed",self,"on_tween_completed") pass # 使用节点进行动画 func interpolate_array(values:Array) -> void: if values.size() < 2: return if is_active(): stop_all() self.index = 0 self.values = values play_step() # 播放其中一节 func play_step(): var start_value = values[index] var end_value = values[index + 1] self.interpolate_method(self,"on_step",start_value,end_value,duration) self.start() # 程序内步进回调 func on_step(step): emit_signal("array_value_step",step) pass # 动画完成回调 func on_tween_completed(object: Object, key: NodePath): if index + 2 < values.size(): index += 1 play_step() else: emit_signal("array_completed")