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.

Signal

代表 Object 中某个信号的内置类型。

描述

信号 Signal 是内置的 Variant 类型,代表 Object 实例的某个信息。信号和所有 Variant 类型一样,可以在变量中存储、传递给函数。信号能够让所有连接的 Callable(及相应扩展对象)监听事件并作出反应,不必直接互相引用。这样就能让代码更灵活、更易于管理。你可以使用 Object.has_signal() 来判断 Object 是否存在给定名称的信号。

在 GDScript 中,信号可以使用 signal 关键字声明。在 C# 中,你可以在代理上使用 [Signal] 属性。

signal attacked

# 可以声明额外的参数。
# 这些参数必须在发出信号时传递。
signal item_dropped(item_name, amount)

备注

通过 C# 使用该 API 时会有显著不同,详见 C# API 与 GDScript 的差异

教程

构造函数

Signal

Signal()

Signal

Signal(from: Signal)

Signal

Signal(object: Object, signal: StringName)

方法

int

connect(callable: Callable, flags: int = 0)

void

disconnect(callable: Callable)

void

emit(...) vararg const

Array

get_connections() const

StringName

get_name() const

Object

get_object() const

int

get_object_id() const

bool

has_connections() const

bool

is_connected(callable: Callable) const

bool

is_null() const

运算符

bool

operator !=(right: Signal)

bool

operator ==(right: Signal)


构造函数说明

Signal Signal() 🔗

构造空的 Signal,没有绑定对象和信号名称。


Signal Signal(from: 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 的引用。

  • flagsConnectFlags 的组合。


StringName get_name() const 🔗

返回该信号的名称。


Object get_object() const 🔗

返回发出该信号的对象。


int get_object_id() const 🔗

返回发出该信号的对象的 ID(见 Object.get_instance_id())。


bool has_connections() const 🔗

如果存在连接到该信号的 Callable,则返回 true


bool is_connected(callable: Callable) const 🔗

如果指定的 Callable 已连接到此信号,则返回 true


bool is_null() const 🔗

如果该 Signal 不存在对象且信号名为空,则返回 true。等价于 signal == Signal()


运算符说明

bool operator !=(right: Signal) 🔗

如果信号的对象或名称不同,则返回 true


bool operator ==(right: Signal) 🔗

如果信号的对象和名称相同,则返回 true