我试图在动画完成后重置变量的值,如下所示:
extends Node2D
var testing=false
func _ready():
var ani_player=$AnimationPlayer
ani_player.play("ani_2")
ani_player.connect("animation_finished",self,"set",["testing",false])
但是由于某些原因它给出了错误:
E 0:00:00.479 emit_signal:从信号调用方法错误'animation_finished': 'Node2D(Main.gd)::set':方法参数,但是用3..& lt; c++ Source>核心/object.cpp: 1242 @emit_signal ()
这是没有意义的,我传递2个变量["testing",false]
为什么它一直得到第三个?
我错过了什么吗?
除了信号传递的变量外,还传递绑定的变量…animation_finished
传递动画的名称。所以你调用的方法(set
)实际上会得到三个参数。要处理这个make和额外的方法——它忽略了第一个参数——并连接到它。
根据@Theraot的回答,我是这样做的:
extends Node2D
var testing=false
func animation_finished_callback(var _extra, var new_val):
testing=new_val
func _ready():
var ani_player=$AnimationPlayer
ani_player.play("ani_2")
ani_player.connect("animation_finished",self,"animation_finished_callback",[false],CONNECT_ONESHOT)