Godot 4.1.1中GDScript动态添加CheckBox信号绑定报错求助
解决Godot 4中CheckBox信号绑定的错误问题
错误原因
Godot 4对信号连接的API做了修改,不再沿用Godot 3里connect(信号名, 对象, 方法名)的参数格式,要求第二个参数必须是Callable类型,你当前的写法是旧版本语法,因此触发类型不匹配错误。
修复方案
有两种常用的正确写法:
写法1:直接传递方法引用(推荐)
直接把当前节点的方法作为Callable传入,这是Godot 4最简洁的写法:
func _on_add_left_button_pressed(): var checkbox = CheckBox.new() var text = houseNum.text leftList.add_child(checkbox) checkbox.text = text # 直接传递方法引用 checkbox.connect("toggled", self._on_checkbox_toggled)
写法2:用Callable构造器包装
如果需要用字符串指定方法名,可以用Callable构造器把对象和方法名包装成合法的Callable类型:
func _on_add_left_button_pressed(): var checkbox = CheckBox.new() var text = houseNum.text leftList.add_child(checkbox) checkbox.text = text # 用Callable构造器包装对象和方法名 checkbox.connect("toggled", Callable(self, "_on_checkbox_toggled"))
额外注意事项
确保你的_on_checkbox_toggled函数参数匹配toggled信号的输出,该信号会传递一个布尔值表示CheckBox的选中状态,函数定义应如下:
func _on_checkbox_toggled(is_toggled: bool): print("CheckBox状态变化:", is_toggled)
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

