到目前为止我一直在尝试做的事情 -
我有一个名为recipes
的单例脚本类。我有一个信号launched
。我有recipe
类的对象。其中一个对象是noodles
。我想将信号launched
连接到面条中名为after_launch
的功能。我不确定将信号连接到哪个节点。 我正在使用一个类,因为我有多个recipes
,每个都有自己的launched
信号。
我还想知道如何将信号连接到单例脚本中的函数 - 根本没有节点。
我一直在使用相同的代码 -
connect("launched", self, "launched_noodle")
我确实了解使用"连接"而不使用其前面的节点会产生错误。 错误-
错误(3,1( 意外令牌 标识符:连接
我该怎么做——
1(将其连接到编写代码的节点 - w.r.trecipes
和noodles
.您通常将信号连接到哪些节点?
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
置于全局范围内,以便其他脚本可以从中继承。