Class 连接无节点和通过子节点的信号-Godot

Class 连接无节点和通过子节点的信号-Godot,class,nodes,godot,gdscript,Class,Nodes,Godot,Gdscript,到目前为止我一直想做的- 我有一个名为recipes的类单例脚本。我有一个信号启动了。我有recipe类的对象。其中一个对象是面条。我想将信号launched连接到面条中一个名为的函数(启动后)。我不确定要将信号连接到哪个节点。我使用一个类是因为我有多个配方,每个配方都有自己的启动信号 我还想知道如何将信号连接到单例脚本中的函数,而不需要任何节点 我使用的代码也是一样的- connect("launched", self, "launched_noodle") 我知道使用“连接”而不使用前面的

到目前为止我一直想做的-


我有一个名为
recipes
的类单例脚本。我有一个信号
启动了
。我有
recipe
类的对象。其中一个对象是
面条
。我想将信号
launched
连接到面条中一个名为
的函数(启动后)
。我不确定要将信号连接到哪个节点。我使用一个类是因为我有多个
配方
,每个配方都有自己的
启动信号

我还想知道如何将信号连接到单例脚本中的函数,而不需要任何节点

我使用的代码也是一样的-

connect("launched", self, "launched_noodle")
我知道使用“连接”而不使用前面的节点会产生错误。 错误-

错误(3,1)意外的令牌标识符:connect

我如何-

1)将其连接到写入代码的节点-w.r.t
recipes
面条
。您通常将信号连接到哪些节点?

2)当我只想将其连接到Singleton脚本时进行连接。

我试图用谷歌搜索这个问题,结果发现了一个类似的问题。我不明白完整的问题或答案。也许你可以参考一下

其他资料-

我的班级代码(单身)recipe

extends Node2D
class_name recipe
signal launched
面条和其他儿童的代码-

extends recipe
connect("launched", self, "launched_noodle")
代码流-

用户触发
烹饪站
,屏幕上将打开
烹饪站
节点

然后,检查用户的级别和其他参数,并在屏幕上显示适当的
配方。这个
配方
是一个定义的
——一个Godot单例——并且有许多物理节点链接在
烹饪站下


一旦相应的节点被定位并显示在屏幕上,我想要启动的
信号应该由
烹饪站发出。此
信号
-根据其发出的节点,在屏幕上进行某些更改。这是通过名为
启动的函数\u recipename
发生错误
意外的令牌标识符:connect
,因为
connect
是一个函数,所以您需要在另一个函数的范围内调用它,如
\u ready
。根据您描述的流程,听起来像是
启动的
应该是烹饪站中定义的信号,而不是
配方
,因此您可能会有如下情况:

  • CookingStation(定义启动的信号
    • 面条(定义启动时的功能
面条.gd中

extends Recipe

func _on_launched():
    print("Noodles was launched")

func _ready():
    var cooking_station = get_parent()
    cooking_station.connect("launched", self, "_on_launched")  

这里真的不需要单身汉。如果您认为您需要一个单例,以便
面条
可以继承
配方
,那么这是不必要的。只要添加
class\u name Recipe
指令,就会将
Recipe
放入全局范围,以便其他脚本可以从中继承。

“我有一个名为recipes的类单例脚本”。。。“我有多种食谱”。这些说法似乎自相矛盾。根据定义,单例只有一个实例。另外,请分享您的完整代码。这个错误听起来像是语法错误。嗨。我的独生子女是一个班级,有很多孩子。我已经按照要求添加了额外的代码。扩展一个单例类来创建非单例节点对我来说是一个非常奇怪的模式。你能退一步,解释一下你在高层次上真正想要完成什么吗?我正在尝试创建一个系统,其中有一个烹饪站,有多个食谱节点。所有这些参数都被隐藏,并且与玩家级别和某些其他参数匹配的参数显示在屏幕上。所有的菜谱都有标准的函数——所以我创建了一个所有节点都可以访问的类——因此在一个单例脚本中。我将该类扩展到屏幕中的所有节点,因为所有节点的变量值都不同,即使变量名称相同。类似地,我还想要一个所有节点都通用的信号,所以我尝试将其放入类中。当你说
Singleton
,你是不是特别指一个,即
自动加载
节点?嗨,这似乎有作用-但现在我需要为每种类型的配方制作单独的信号。有没有一种方法可以让我只做一个,让它为所有人工作?我仍然不确定我是否理解,但也许你想要一个参数化的信号<代码>发射信号(配方名称)
发射信号(“发射”、“面条”)
?是的,现在我想,一个参数化的信号可能会解决我的问题。谢谢,我将研究带参数的信号。