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.

信号

A built-in type representing a signal of an Object.

描述

Signal is a built-in Variant type that represents a signal of an Object instance. Like all Variant types, it can be stored in variables and passed to functions. Signals allow all connected Callables (and by extension their respective objects) to listen and react to events, without directly referencing one another. This keeps the code flexible and easier to manage.

In GDScript, signals can be declared with the signal keyword. In C#, you may use the [Signal] attribute on a delegate.

signal attacked

# Additional arguments may be declared.
# These arguments must be passed when the signal is emitted.
signal item_dropped(item_name, amount)

备注

There are notable differences when using this API with C#. See C# API 与 GDScript 的差异 for more information.

教程

构造函数

Signal

Signal ( )

Signal

Signal ( Signal from )

Signal

Signal ( Object object, StringName signal )

Methods

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 )


Constructor Descriptions

Signal Signal ( )

Constructs an empty Signal with no object nor signal name bound.


Signal Signal ( Signal from )

Constructs a Signal as a copy of the given Signal.


Signal Signal ( Object object, StringName signal )

Creates a new Signal named signal in the specified object.


Method Descriptions

int connect ( Callable callable, int flags=0 )

Connects this signal to the specified callable. Optional flags can be also added to configure the connection's behavior (see ConnectFlags constants). You can provide additional arguments to the connected callable by using Callable.bind.

A signal can only be connected once to the same Callable. If the signal is already connected, returns @GlobalScope.ERR_INVALID_PARAMETER and pushes an error message, unless the signal is connected with Object.CONNECT_REFERENCE_COUNTED. To prevent this, use is_connected first to check for existing connections.

for button in $Buttons.get_children():
    button.pressed.connect(_on_pressed.bind(button))

func _on_pressed(button):
    print(button.name, " was pressed")

void disconnect ( Callable callable )

Disconnects this signal from the specified Callable. If the connection does not exist, generates an error. Use is_connected to make sure that the connection exists.


void emit ( ... ) vararg const

Emits this signal. All Callables connected to this signal will be triggered. This method supports a variable number of arguments, so parameters can be passed as a comma separated list.


Array get_connections ( ) const

Returns an Array of connections for this signal. Each connection is represented as a Dictionary that contains three entries:

  • signal is a reference to this signal;

  • callable is a reference to the connected Callable;

  • flags is a combination of ConnectFlags.


StringName get_name ( ) const

Returns the name of this signal.


Object get_object ( ) const

Returns the object emitting this signal.


int get_object_id ( ) const

Returns the ID of the object emitting this signal (see Object.get_instance_id).


bool is_connected ( Callable callable ) const

Returns true if the specified Callable is connected to this signal.


bool is_null ( ) const

Returns true if the signal's name does not exist in its object, or the object is not valid.


Operator Descriptions

bool operator != ( Signal right )

Returns true if the signals do not share the same object and name.


bool operator == ( Signal right )

Returns true if both signals share the same object and name.