在 Godot 4 中,bind 是一个极其好用的功能,它允许你在连接信号或传递函数时,提前“固化”(绑定)一部分参数。
简单来说,当信号触发时,Godot 会自动传入它自带的参数(比如按钮点击事件),而 bind 可以让你在这些自带参数的后面,强行塞入你自己想要传递的额外数据。
🎯 核心作用
假设你有一个通用的处理函数,但需要区分是哪个具体的物品被点击了。使用 bind,你就可以在连接信号时,把物品的 ID、名字等数据直接打包传进去。
💻 基础语法与实战示例
在 Godot 4 中,推荐直接使用 Signal.connect(Callable.bind(...)) 的写法。
假设我们有一排背包格子,点击任意一个格子,都需要知道是“第几个”格子:
extends Control
func _ready():
# 假设有3个格子按钮
for i in range(3):
var button = Button.new()
button.text = "格子 " + str(i)
add_child(button)
# 核心用法:使用 bind 把当前的索引 i 绑定到信号上
# 注意:bind 的参数会排在信号自带参数的【后面】
button.pressed.connect(_on_slot_pressed.bind(i))
# 信号回调函数
# event: 如果有的话是信号自带的参数(pressed信号没有自带参数)
# slot_index: 这就是我们通过 bind 绑定的额外参数!
func _on_slot_pressed(slot_index: int):
print("你点击了第 ", slot_index,


638

被折叠的 条评论
为什么被折叠?



