这将是代码中给我带来错误的部分。
\nfor 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)\nRun Code Online (Sandbox Code Playgroud)\n在 Godot 3 中,连接工作正常,但 label.groups 不起作用,我该如何在 Godot 4 中做到这一点?
\nconnect从 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)
| 归档时间: |
|
| 查看次数: |
1431 次 |
| 最近记录: |