Signal
代表 Object 中某个信号的内置类型。
描述
信号 Signal 是内置的 Variant 类型,代表 Object 实例的某个信息。信号和所有 Variant 类型一样,可以在变量中存储、传递给函数。信号能够让所有连接的 Callable(及相应扩展对象)监听事件并作出反应,不必直接互相引用。这样就能让代码更灵活、更易于管理。
在 GDScript 中,信号可以使用 signal
关键字声明。在 C# 中,你可以在代理上使用 [Signal]
属性。
GDScriptC#
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, StringName signal ) |
方法
void | disconnect ( Callable callable ) |
void | emit ( … ) vararg const |
get_connections ( ) const | |
get_name ( ) const | |
get_object ( ) const | |
get_object_id ( ) const | |
is_connected ( Callable callable ) const | |
is_null ( ) const |
操作符
operator != ( Signal right ) | |
operator == ( Signal right ) |
构造函数说明
Signal Signal ( )
构造空的 Signal,没有绑定对象和信号名称。
构造给定 Signal 的副本。
Signal Signal ( Object object, StringName signal )
在指定对象 object
中新建名称 signal
的 Signal。
方法说明
int connect ( Callable callable, int flags=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
返回该信号的名称。
Object get_object ( ) const
返回发出该信号的对象。
int get_object_id ( ) const
返回发出该信号的对象的 ID(见 Object.get_instance_id)。
bool is_connected ( Callable callable ) const
如果指定的 Callable 已连接到此信号,则返回 true
。
bool is_null ( ) const
如果该信号的名称并不存在于其对象中,或者对象无效,则返回 true
。
操作符说明
bool operator != ( Signal right )
如果信号的对象或名称不同,则返回 true
。
bool operator == ( Signal right )
如果信号的对象和名称相同,则返回 true
。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.