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")
posted @ 2018-12-30 14:51  宸少凌  阅读(201)  评论(0编辑  收藏  举报

万年以来谁著史,三千里外欲封侯