📅  最后修改于: 2023-12-03 15:00:53.365000             🧑  作者: Mango
在 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 引擎中的游戏开发更为简单和灵活。