Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Signal
代表 Object 中某个信号的内置类型。
描述
信号 Signal 是内置的 Variant 类型,代表 Object 实例的某个信息。信号和所有 Variant 类型一样,可以在变量中存储、传递给函数。信号能够让所有连接的 Callable(及相应扩展对象)监听事件并作出反应,不必直接互相引用。这样就能让代码更灵活、更易于管理。你可以使用 Object.has_signal() 来判断 Object 是否存在给定名称的信号。
在 GDScript 中,信号可以使用 signal
关键字声明。在 C# 中,你可以在代理上使用 [Signal]
属性。
signal attacked
# 可以声明额外的参数。
# 这些参数必须在发出信号时传递。
signal item_dropped(item_name, amount)
[Signal]
delegate void AttackedEventHandler();
// 可以声明额外的参数。
// 这些参数必须在发出信号时传递。
[Signal]
delegate void ItemDroppedEventHandler(string itemName, int amount);
备注
通过 C# 使用该 API 时会有显著不同,详见 C# API 与 GDScript 的差异。
教程
构造函数
Signal() |
|
Signal(object: Object, signal: StringName) |
方法
void |
disconnect(callable: Callable) |
void |
emit(...) vararg const |
get_connections() const |
|
get_name() const |
|
get_object() const |
|
get_object_id() const |
|
has_connections() const |
|
is_connected(callable: Callable) const |
|
is_null() const |
运算符
operator !=(right: Signal) |
|
operator ==(right: Signal) |
构造函数说明
构造空的 Signal,没有绑定对象和信号名称。
构造给定 Signal 的副本。
Signal Signal(object: Object, signal: StringName)
在指定对象 object
中新建 Signal 对象,引用名为 signal
的信号。
方法说明
int connect(callable: Callable, flags: int = 0) 🔗
将此信号连接到指定的 callable
。还可以添加 flags
对连接的行为进行配置(见 ConnectFlags 常量)。可以使用 Callable.bind() 为连接的 callable
提供额外的参数。
一个信号只能和同一个 Callable 连接一次。如果该信号已连接,则会返回 @GlobalScope.ERR_INVALID_PARAMETER 并推入错误消息,除非信号是用 Object.CONNECT_REFERENCE_COUNTED 连接的。要防止这个问题,请先使用 is_connected() 检查已有连接。
for button in $Buttons.get_children():
button.pressed.connect(_on_pressed.bind(button))
func _on_pressed(button):
print(button.name, " 被按下了")
void disconnect(callable: Callable) 🔗
将该信号与给定的 Callable 断开连接。如果该连接不存在,则会生成错误。请使用 is_connected() 来确保连接存在。
void emit(...) vararg const 🔗
发出该信号。与该信号相连的所有 Callable 都将被触发。此方法支持可变数量的参数,所以参数可以用逗号分隔列表的形式传递。
Array get_connections() const 🔗
返回该信号的连接 Array。连接用 Dictionary 表示,包含三个条目:
signal
是对此信号的引用。callable
是对连接的 Callable 的引用。flags
是 ConnectFlags 的组合。
StringName get_name() const 🔗
返回该信号的名称。
返回发出该信号的对象。
返回发出该信号的对象的 ID(见 Object.get_instance_id())。
bool has_connections() const 🔗
如果存在连接到该信号的 Callable,则返回 true
。
bool is_connected(callable: Callable) const 🔗
如果指定的 Callable 已连接到此信号,则返回 true
。
如果该 Signal 不存在对象且信号名为空,则返回 true
。等价于 signal == Signal()
。
运算符说明
bool operator !=(right: Signal) 🔗
如果信号的对象或名称不同,则返回 true
。
bool operator ==(right: Signal) 🔗
如果信号的对象和名称相同,则返回 true
。