连接信号没有节点,并通过孩子的节点 - 戈多



到目前为止我一直在尝试做的事情 -

我有一个名为recipes的单例脚本类。我有一个信号launched。我有recipe类的对象。其中一个对象是noodles。我想将信号launched连接到面条中名为after_launch的功能。我不确定将信号连接到哪个节点。 我正在使用一个类,因为我有多个recipes,每个都有自己的launched信号。

我还想知道如何将信号连接到单例脚本中的函数 - 根本没有节点。

我一直在使用相同的代码 -

connect("launched", self, "launched_noodle")

我确实了解使用"连接"而不使用其前面的节点会产生错误。 错误-

错误(3,1( 意外令牌 标识符:连接

我该怎么做——

1(将其连接到编写代码的节点 - w.r.trecipesnoodles.您通常将信号连接到哪些节点?

2(当我只想将其连接到单例脚本时连接。

我试图谷歌这个问题,并在戈多论坛上遇到了这个问题。我不明白完整的问题或答案。也许对您有所帮助。

附加信息 -

我的类(单例(的代码recipe

extends Node2D
class_name recipe
signal launched

noodles和其他儿童守则 -

extends recipe
connect("launched", self, "launched_noodle")

代码流 -

用户触发cooking station,屏幕上打开cooking station节点。

之后,检查用户的级别和其他参数,并在屏幕上显示适当的recipe。此recipe是一个已定义的class- Godot Singleton,并且在cooking station下链接了许多物理节点

一旦适当的节点被定位并显示在屏幕上,我想启动的signal应该由cooking station发出。此signal- 取决于它发出的节点,在屏幕上进行某些更改。这是通过一个名为launched_recipename的函数

发生错误Unexpected token Identifier:connect因为connect是一个函数,所以你需要在另一个函数的范围内调用它,比如_ready。根据您描述的流程,听起来launched应该是烹饪站中定义的信号,而不是recipe,因此您可能会有这样的内容:

  • 烹饪站(定义信号launched(
    • 面条(定义功能_on_launched(

Noodles.gd

extends Recipe
func _on_launched():
print("Noodles was launched")
func _ready():
var cooking_station = get_parent()
cooking_station.connect("launched", self, "_on_launched")  

这里真的不需要单例。如果你认为你需要一个单例,这样Noodles就可以从Recipe继承,那就没有必要了。只需添加class_name Recipe指令就会Recipe置于全局范围内,以便其他脚本可以从中继承。

最新更新