📜  gdscript 连接信号 (1)

📅  最后修改于: 2023-12-03 15:30:53.142000             🧑  作者: Mango

GDScript 连接信号

在 Godot 引擎中,使用 GDScript 可以轻松连接信号。信号被定义为一个对象在特定事件时发送的消息。通过连接信号,我们可以在事件发生时执行一些操作。

连接信号的基础语法

下面是一个简单的示例,它演示了如何连接一个按钮组件的 pressed 信号,当用户按下按钮时,它将输出一条消息:

func _ready():
    var button = get_node("Button")
    button.connect("pressed", self, "_on_button_pressed")

func _on_button_pressed():
    print("Button pressed")

在上面的代码中,我们获取了一个名为 Button 的组件并连接了它的 pressed 信号到 _on_button_pressed 函数。当按钮被按下时,_on_button_pressed 函数将被调用。

connect 函数中,第一个参数是信号的名称,在这个例子中是 pressed。第二个参数是连接的对象,这里是 self,意味着连接到当前脚本。第三个参数是要调用的函数的名称,这里是 _on_button_pressed

传递参数

有时候我们需要在信号被触发时传递一些额外的参数。在 GDScript 中,我们可以通过向 connect 函数传递一个数组来实现这一点。下面是一个示例,它演示了如何连接一个带有自定义参数的信号:

func _ready():
    var button = get_node("Button")
    button.connect("custom_signal", self, "_on_custom_signal", [1, "Hello"])

func _on_custom_signal(param1, param2):
    print("Custom signal triggered with params:", param1, param2)

在上面的代码中,我们连接了 custom_signal 信号,并将 [1, "Hello"] 作为参数传递给了 _on_custom_signal 函数。当 custom_signal 信号被触发时,_on_custom_signal 函数将被调用,并传递两个参数 param1param2,这里分别是 1"Hello"

断开连接的信号

当不再需要信号时,可以使用 disconnect 函数来断开信号连接。下面是一个示例,它演示了如何断开连接一个按钮的 pressed 信号:

func _ready():
    var button = get_node("Button")
    button.connect("pressed", self, "_on_button_pressed")
    button.disconnect("pressed", self, "_on_button_pressed")

func _on_button_pressed():
    print("Button pressed")

在上面的代码中,我们首先连接了 pressed 信号,然后在下一行中断开了信号。这意味着当按钮被按下时,不会调用 _on_button_pressed 函数。

结论

通过连接信号,我们可以轻松地实现各种功能。在 GDScript 中,连接信号非常容易,并且可以通过传递自定义参数来进一步扩展。如果不再需要连接的信号,可以使用 disconnect 函数来断开连接。