emit_signal:从信号"animation_finished"调用方法时出错:"set":方法需要 2 个参数,但调用 3 个参数



我试图在动画完成后重置变量的值,如下所示:

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)

最新更新