【发布时间】:2020-12-12 20:02:44
【问题描述】:
我目前正在制作一个看起来像这样的简单树:
MainNode(父节点)-> 角色(子节点)
MainNode 可以添加子节点或从任何文件中释放子节点,例如地图(即terrain.tscn)或事件(即event.tscn)。所有事件和地图都将存储在字典中以便于使用。代码如下所示:
func loadNewScene(key):
# load the corresponding tscn file from dictionary
add_child(instanced_scene)
func freeScene(key):
# find the corresponding target node using key
target.queue_free()
func _ready():
# load Mainmenu.tscn
loadNewScene("Mainmenu")
当我在 Mainmenu.tscn 中按开始时,我的问题就开始了。如果我小时候有 Mainmenu.tscn(默认情况下),我总是可以发出一个信号来确认玩家按下按钮来触发一个信号以继续下一个场景,例如:
func _on_Button_pressed():
var target_scene = "Opening Scene"
freeScene(current_scene)
loadNewScene(target_scene)
但由于节点实际上不在 MainNode 中(它将在 _ready() 之后作为子节点添加),我找不到从“Mainmenu.tscn”向 MainNode 发出信号的方法,因为最初它不在 MainNode 的树中。
有没有办法向不同的树发出信号?或者有其他解决方案吗?
【问题讨论】:
-
信号继承自
Object,即使目标Node不在场景树中也可以连接和发射。我建议使用导致问题的代码更新您的帖子并描述您想要的结果。