Signal

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

描述

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

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

GDScriptC#

  1. signal attacked
  2. # 可以声明额外的参数。
  3. # 这些参数必须在发出信号时传递。
  4. signal item_dropped(item_name, amount)
  1. [Signal]
  2. delegate void AttackedEventHandler();
  3. // 可以声明额外的参数。
  4. // 这些参数必须在发出信号时传递。
  5. [Signal]
  6. delegate void ItemDroppedEventHandler(string itemName, int amount);

备注

通过 C# 使用这个 API 时有显著的不同。详见 C# API 与 GDScript 的差异

教程

构造函数

Signal

Signal ( )

Signal

Signal ( Signal from )

Signal

Signal ( Object object, StringName signal )

方法

int

connect ( Callable callable, int flags=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

is_connected ( Callable callable ) const

bool

is_null ( ) const

操作符

bool

operator != ( Signal right )

bool

operator == ( Signal right )


构造函数说明

Signal Signal ( )

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


Signal Signal ( Signal from )

构造给定 Signal 的副本。


Signal Signal ( Object object, StringName signal )

在指定对象 object 中新建名称 signalSignal


方法说明

int connect ( Callable callable, int flags=0 )

将此信号连接到指定的 callable。还可以添加 flags 对连接的行为进行配置(见 ConnectFlags 常量)。可以使用 Callable.bind 为连接的 callable 提供额外的参数。

一个信号只能和同一个 Callable 连接一次。如果该信号已连接,则会返回 @GlobalScope.ERR_INVALID_PARAMETER 并推入错误消息,除非信号是用 Object.CONNECT_REFERENCE_COUNTED 连接的。要防止这个问题,请先使用 is_connected 检查已有连接。

  1. for button in $Buttons.get_children():
  2. button.pressed.connect(_on_pressed.bind(button))
  3. func _on_pressed(button):
  4. 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 is_connected ( Callable callable ) const

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


bool is_null ( ) const

如果该信号的名称并不存在于其对象中,或者对象无效,则返回 true


操作符说明

bool operator != ( Signal right )

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


bool operator == ( Signal right )

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

Previous Next


© 版权所有 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.