【发布时间】:2020-01-04 22:24:08
【问题描述】:
到目前为止我一直在尝试做的事情 -
我有一个名为 recipes 的类 Singleton 脚本。我有一个信号launched。我有 recipe 类的对象。其中一个对象是noodles。我想将信号launched 连接到面条中名为after_launch 的函数。我不确定将信号连接到哪个节点。我正在使用一个类,因为我有多个recipes,每个都有自己的launched 信号。
我还想知道如何在单例脚本中将信号连接到函数 - 根本没有节点。
我一直在使用的代码 -
connect("launched", self, "launched_noodle")
我明白使用“连接”而不使用它前面的节点会产生错误。 错误 -
error(3,1) 意外的令牌标识符:连接
我该怎么做 -
1) 将其连接到编写代码的节点 - w.r.t recipes 和 noodles。您通常将信号连接到哪些节点?
2) 当我只想将其连接到单例脚本时进行连接。
我尝试用谷歌搜索这个问题,并遇到了this question on Godot Forum 的类似问题。我不明白完整的问题或答案。也许可能对您有所帮助。
附加信息 -
我班的代码(单例)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的函数
【问题讨论】:
-
“我有一个名为 recipes 的类 Singleton 脚本”...“我有多个食谱”。这些说法似乎自相矛盾。根据定义,单例具有一个实例。另外,请分享您的完整代码。该错误听起来像是语法错误。
-
嗨。我的 Singleton 是一个班级,它有很多孩子。我已按要求添加了附加代码。
-
扩展一个单例类来创建非单例节点对我来说是一个非常奇怪的模式。你能后退一步,解释一下你在高层次上真正想要完成的事情吗?
-
我正在尝试创建一个系统,其中有一个具有多个食谱节点的烹饪站。所有这些都是隐藏的,与玩家级别和某些其他参数相匹配的会显示在屏幕上。所有配方都有标准功能——所以我创建了一个所有节点都可以访问的类——因此在一个单例脚本中。我将该类扩展到屏幕中的所有节点,因为所有节点的变量值都不同,即使变量名称相同。同样,我也想要一个对所有节点都通用的信号,所以我试图把它放在类中。
-
当您说
Singleton时,您是指Godot Singleton,即Autoload节点吗?
标签: class nodes godot gdscript