如何在 Godot 4 中连接带有额外参数的信号

-3 gdscript godot godot4

这将是代码中给我带来错误的部分。

\n
for y in range(rows):\n        var row = []\n        for x in range(columns):\n            var label = Button.new()\n            row.append(label)\n            self.add_child(label)\n            label.group = "letters"  # Asignar el grupo "letters" a los botones\n            label.connect("pressed", self, "_on_LetterPressed", [x, y])  # Conectar la se\xc3\xb1al de presionado\n        grid.append(row)\n
Run Code Online (Sandbox Code Playgroud)\n

在 Godot 3 中,连接工作正常,但 label.groups 不起作用,我该如何在 Godot 4 中做到这一点?

\n

The*_*aot 6

如何connect从 Godot 3 升级到 Godot 4

让我们从简单的案例开始。如果在 Godot 3 中你这样连接:

戈多3

object.connect("signal_name", self, "method_name")
Run Code Online (Sandbox Code Playgroud)

您可以在 Godot 4 中执行相同的操作,方法是Callable

戈多4

object.connect("signal_name", Callable(self, "method_name"))
Run Code Online (Sandbox Code Playgroud)

顺便说一句,戈多会给Callable我们做一个这样的:

戈多4

object.connect("signal_name", method_name)
Run Code Online (Sandbox Code Playgroud)

Signal此外,您可以这样使用:

戈多4

object.signal_name.connect(method_name)
Run Code Online (Sandbox Code Playgroud)

有额外的参数

但是,就您而言,您还有额外的参数:

戈多3

object.connect("signal_name", self, "method_name", [extra, arguments])
Run Code Online (Sandbox Code Playgroud)

我们在 Godot 4 中要做的就是将它们绑定到Callable这样的位置:

戈多4

object.connect("signal_name", Callable(self, "method_name").bind([extra, arguments]))
Run Code Online (Sandbox Code Playgroud)

或者像这样:

戈多4

object.connect("signal_name", method_name.bind([extra, arguments]))
Run Code Online (Sandbox Code Playgroud)

或者像这样:

戈多4

object.signal_name.connect(method_name.bind([extra, arguments]))
Run Code Online (Sandbox Code Playgroud)