GODOT-使用connect()时信号未连接.函数未被执行



以下是文件链接:

signal_test.gd

extends Node2D
signal do
func _ready() -> void:
print('signal_ready!')
emit_signal('do')
pass

测试.gd

extends Node2D
onready var signal_test = preload('res://signal_test.tscn')
func _ready() -> void:
print('test ready')
func _process(delta: float) -> void:
if Input.is_action_just_pressed("jump"):
var h = signal_test.instance()
add_child(h)
h.connect('do', self, 'do')
print(h.is_connected('do', self, 'do'))
func do():
print('DONE CONNECTING!!')

test.gd文件创建一个节点的实例,并使用connect()方法将其连接到其函数。但该函数没有得到执行。当我在test.tscn上使用is_connected()时,它只显示true,但在节点的实例上显示false。有人知道为什么吗?

信号将在_ready中发出,该信号将在节点添加为子节点后执行,在下一行:之前执行

var h = signal_test.instance()
add_child(h)
# <-- signal emitted here, it is NOT connected
h.connect('do', self, 'do')

解决方案:在将节点添加为子节点之前连接信号:

var h = signal_test.instance()
h.connect('do', self, 'do')
add_child(h)
# <-- signal emitted here, it is connected

最新更新