微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决GODOT - 使用 connect() 时信号未连接函数没有被执行

这是文件链接

signal_test.gd

extends Node2D
signal do

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

test.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','do'))

func do():
    print('DONE CONNECTING!!')

test.gd 文件创建一个节点实例,并使用 connect() 方法将其连接到它的函数。但是该函数没有被执行。当我在 test.tscn 上使用 true 时它只说 is_connected(),但在节点实例上使用 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','do')
add_child(h)
# <-- signal emitted here,it is connected

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。