- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 gdscipt,并且正在尝试设置状态机。我正在尝试访问PlayerStateMachine/PlayerStateMachineManager.gd
通过使用
onready var statemachine = get_node("PlayerStateMachine/PlayerStateMachineManager.gd")
但我不断收到错误
get_node: (Node not found: "PlayerStateMachine/PlayerStateMachineManager.gd" (absolute path attempted from "/root/Player").)
据我了解,get_node()
应该从当前节点的父节点查找路径,那么为什么它找不到 PlayerStateMachineManager.gd
?
仅供引用:PlayerStateMachine
是与 Player.gd
位于同一文件夹中的文件夹
最佳答案
get_node
方法将尝试从场景树中获取节点(或因错误而失败)。但是,显然您正在传递脚本文件的路径(例如扩展名为“.gd”)?文件位于文件系统树中,而不是场景树中。
需要明确的是:脚本不是 Node
,并且 Node
不是脚本(也不是脚本文件)。节点存在于场景树中,并且可能(也可能没有)附加了脚本。 脚本可以附加到Object
、多个对象
,或者没有。是的,Node
是 Object
您可以使用 add_child
将节点
添加到代码中的场景树中,场景树中路径的组成部分是 name
Node
的。 您还可以修改场景文件的场景树(例如扩展名为“.tscn”),您可以在 Godot 编辑器中直观地执行此操作。
重申一下:添加节点
并不意味着添加脚本文件。并且组织脚本文件的方式不必与场景树相匹配。此外,您可以拥有不附加到 Node
的脚本。
假设您需要一个节点
(而不是脚本文件),您需要场景树中它的路径。 我无法告诉你哪条是路径,因为你没有分享你的场景树的样子。
在编辑器中,场景树看起来像这样:
并且 get_node
使用该树中的路径。
或者您确实想要加载脚本文件。毕竟,您共享的图像是文件系统树的图像(除了这张图片不是 Godot 编辑器的图像):
您可以使用 load
加载这些脚本文件(或preload
或ResourceLoader.load
或ResourceLoader.load_interactive
...)给你一个Script
。如果是GDScript脚本文件,则是GDScript
。 这也是对象
。您可以使用 new
实例化该GDScript
...
从 GDScript 语言的角度来看,Script
是类。然而,在幕后发生的事情是,当您实例化一个 GDScript
Godot 时,它将创建一个 Object
适当的类型(Node
或不是)并附加其GDScript
。 请注意,Object
类具有 get_script
和 set_script
方法。
请注意,Godot 打包并虚拟了项目文件系统。因此,您可以使用以“res://”开头的路径来引用项目文件系统中的文件,这些文件是您编辑游戏时的实际文件,或者是您获得的“.pck”文件中的虚拟文件导出游戏。
关于godot - 如何在Godot中引用节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72906056/
我是一名优秀的程序员,十分优秀!