Godot之信号(signal)

Godot引擎之信号(signal)

本文粗略介绍Godot引擎中的 signal(信号) 使用。Godot引擎官方建议在你的游戏开发中更多的使用信号来完成模块或功能间的通信。所以你需要了解它的具体工作方式。

信号的定义/添加

extends Node2D

#信号的添加 之一
signal my_first_signal;


func _ready():
	#信号的添加之二  
	add_user_signal("my_secend_singal")
	pass


信号的连接/绑定

extends Node2D

#信号的添加 之一
signal my_first_signal;


func _ready():
	#信号的添加之二   注:该方法可以在信号定义时,就为信号绑定1~n个参数。
	add_user_signal("my_secend_signal",[1,2,3])
	#信号的绑定   注:绑定只能发生在信号添加成功之后!
	connect("my_first_signal",self,"_first_cb")
	connect("my_secend_signal",self,"_secend_cb",[4,5],CONNECT_ONESHOT)#flags:CONNECT_DEFERRED、CONNECT_ONESHOT、CONNECT_PERSIST、CONNECT_REFERENCE_COUNTED
	pass


#该信号回调无参数
func _first_cb():
	print("first signal call me!")

#信号定义\添加时绑定了三个参数,  信号连接\绑定时又绑定了两个参数。
#参数个数必须对应,才可以正确触发回调。
func _secend_cb(one,two,three,four,five):
	print("secend signal call me! args: %d %d %d %d %d。"%[one,two,three,four,five])

信号的触发

extends Node2D

#信号的添加 之一
signal my_first_signal;


func _ready():
	#信号的添加之二   注:该方法可以在信号定义时,就为信号绑定1~n个参数。
	add_user_signal("my_secend_signal")
	#信号的绑定   注:绑定只能发生在信号添加成功之后!
	connect("my_first_signal",self,"_first_cb")
	connect("my_secend_signal",self,"_secend_cb",[1,2],CONNECT_ONESHOT)#flags:CONNECT_DEFERRED、CONNECT_ONESHOT、CONNECT_PERSIST、CONNECT_REFERENCE_COUNTED
	#信号的触发
	emit_signal("my_first_signal")
	emit_signal("my_secend_signal",3,4)
	pass


#该信号回调无参数
func _first_cb():
	print("first signal call me!")

#信号定义\添加时绑定了三个参数,  信号连接\绑定时又绑定了两个参数。
#参数个数必须对应,才可以正确触发回调。
func _secend_cb(arg1,arg2,arg3,arg4):
	print("secend signal call me! arg1:",arg1," arg2:",arg2," arg3:",arg3," arg4:",arg4)

触发前的检查

信号触发前,请确保信号已被正确添加至信号池!可以使用检查方法 has_user_signal(“my_first_signal”)
如果 has_user_signal(“my_first_signal”) 返回True,则使用方法 is_connected(“my_first_signal”,self,"_first_cb") 检查信号连接是否正确。

你可能感兴趣的:(Godot引擎,游戏开发,Godot信号,Godot)