18.信号

Posted empist

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了18.信号相关的知识,希望对你有一定的参考价值。

 

通常希望发送当实例中发生某事的通知。 GDScript支持创建内置的Godot信号。 使用 signal 关键字可以轻松地在GDScript中声明信号。

# No arguments.
signal your_signal_name
# With arguments.
signal your_signal_name_with_args(a, b)

这些信号可以在编辑器中连接,也可以像常规信号那样连接。 获取声明信号的类的实例,并将其连接到另一个实例的方法:

func _callback_no_args():
    print("Got callback!")

func _callback_args(a,b):
    print("Got callback with args! a: ", a, " and b: ", b)

func _at_some_func():
    instance.connect("your_signal_name", self, "_callback_no_args")
    instance.connect("your_signal_name_with_args", self, "_callback_args")

也可以将参数绑定到缺少自定义值的信号:

func _at_some_func():
    instance.connect("your_signal_name", self, "_callback_args", [22, "hello"])

当来自多个对象的信号被连接到一个回调且发送方必须被识别时,这是非常有用的:

func _button_pressed(which):
    print("Button was pressed: ", which.get_name())

func _ready():
    for b in get_node("buttons").get_children():
        b.connect("pressed", self, "_button_pressed",[b])

最后,通过使用 Object.emit_signal 方法来发送定制信号:

func _at_some_func():
    emit_signal("your_signal_name")
    emit_signal("your_signal_name_with_args", 55, 128)
    some_instance.emit_signal("some_signal")

以上是关于18.信号的主要内容,如果未能解决你的问题,请参考以下文章

5.1.18 信号量

[TimLinux] Django 信号

窗函数介绍

CSP核心代码片段记录

谷歌地图片段显示,但没有地图

vscode代码片段建议bug