📜  gdscript 发出信号 (1)

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

GDScript 发出信号

在 Godot 引擎的 GDScript 中,可以使用信号(signal)来进行不同节点之间的通信。信号是一个标记,它告诉其他节点在一些条件下发生了某些事情。当一个节点发出信号时,所有连接到这个信号的节点都可以接收到这个信号并对其进行响应。

发出信号

要发出信号,首先要在节点中定义信号。在节点的类声明中,使用 signal 关键字来定义一个信号的名称和它所需要传递的参数类型(如果有的话)。

signal my_signal(param1_type, param2_type)

接下来,使用 emit_signal 方法来发出信号,并传递它需要的参数:

emit_signal("my_signal", param1_value, param2_value)

例如,一个场景中有一个按钮和一个标签。当按下按钮时,标签应该显示一条消息。这可以通过以下代码来实现:

extends Control

signal message_sent(text: String)

func _on_button_pressed():
    emit_signal("message_sent", "Button pressed")
响应信号

要响应一个信号,首先要将它连接到一个处理函数上。可以通过在节点的 _ready 方法中调用 connect 方法来连接信号。该方法需要传递两个参数:信号的名称和处理这个信号的函数的名称。

func _ready():
    connect("my_signal", self, "_on_my_signal")

处理函数应该接受与发出信号时传递的参数相同的参数。例如,如果信号需要一个字符串参数,那么在处理函数中也需要一个字符串参数。

func _on_my_signal(param1: param1_type, param2: param2_type):
    # 处理代码

例如,如果要在标签中显示按钮按下后的消息,可以使用以下代码:

extends Label

func _ready():
    connect("message_sent", self, "_on_message_sent")

func _on_message_sent(text: String):
    text = "Message: " + text

现在,当按钮按下时,标签将显示“Message: Button pressed”。

结论

使用 GDScript 中的信号可以轻松实现节点之间的通信。定义信号,并使用 emit_signal 方法在节点中发出信号;使用 connect 方法将信号连接到处理函数上。这使得 Godot 引擎中的游戏开发更为简单和灵活。