在 Godot 中扩展 class 时找不到节点错误

Node not found error when extending class in Godot

我有一个子类,它使用另一个超类脚本中的方法和变量。目前,这是通过使用 var superclass = get_node("superclass_path") 引用超类来完成的。我想更改它以便子类脚本扩展超类脚本。我尝试将 class_name superclass 添加到超类,并将子类中的 extends Node 更改为 extends superclass。但是,当我这样做时,超类突然无法再找到它的任何节点,并且出现 Node not found 错误。为什么会这样?

一个class不是场景。 class 没有任何节点。相反,您有一个附加到节点的脚本。

因此,您的 superclass 附加到一个节点,该节点具有其他节点作为您可以获得的子节点,例如使用 get_node("superclass_path")

然后你制作另一个 class extends superclass。你把它贴在哪里?您是否将其附加到具有相同子节点的节点?如果你不这样做,那么就没有理由期望 get_node("superclass_path") 会得到它们。


您可能对场景继承感兴趣。您可以从 FielSystem 面板的上下文菜单并选择“New Inherited Scene”创建一个派生自另一个场景的场景。继承的场景将包括原始场景(及其节点及其属性,包括脚本)。然后你可以替换那些属性。因此,如果需要,您可以替换继承场景中节点的脚本……您使用的脚本可能会也可能不会扩展原始脚本。