Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Node¶
继承: Object
派生: AnimationMixer, AudioStreamPlayer, CanvasItem, CanvasLayer, EditorFileSystem, EditorPlugin, EditorResourcePreview, HTTPRequest, InstancePlaceholder, MissingNode, MultiplayerSpawner, MultiplayerSynchronizer, NavigationAgent2D, NavigationAgent3D, Node3D, ResourcePreloader, ShaderGlobalsOverride, StatusIndicator, Timer, Viewport, WorldEnvironment
所有场景对象的基类。
描述¶
节点是 Godot 的构建模块。它们可以被指定为另一个节点的子节点,从而形成树状排列。一个给定的节点可以包含任意数量的节点作为子节点,要求所有的兄弟节点(即该节点的直接子节点)的名字唯一。
节点树被称为场景。场景可以被保存到磁盘上,然后被实例化到其他场景中。这使得 Godot 项目的架构和数据模型具有非常高的灵活性。
场景树:SceneTree 包含活动的节点树。当一个节点被添加到场景树中时,它将收到 NOTIFICATION_ENTER_TREE 通知,并触发其 _enter_tree 回调。子节点总是在其父节点之后被添加,即父节点的 _enter_tree 回调将在其子节点的之前被触发。
一旦所有的节点被添加到场景树中,它们就会收到 NOTIFICATION_READY 通知,其各自的 _ready 回调被触发。对于一组节点,_ready 回调是按相反的顺序调用的,从子节点开始,向上移动到父节点。
这意味着,当把一个节点添加到场景树中时,将使用下面的顺序进行回调:父节点的 _enter_tree、子节点的 _enter_tree、子节点的 _ready,最后是父节点的 _ready(对整个场景树进行递归)。
处理:节点可以覆盖“处理”状态,以便它们在每一帧上都收到回调,要求它们进行处理(做一些事情)。普通处理(回调 _process,可以使用 set_process 开关)会尽可能快地发生,并且取决于帧率,所以处理时间 delta(单位为秒)会作为参数传入。物理处理(回调 _physics_process,可以使用 set_physics_process 开关)每秒发生固定次数(默认为 60),对物理引擎相关的代码很有用。
节点也可以处理输入事件。存在 _input 函数时,程序每收到一次输入都会去调用它。在许多情况下,这么做是大材小用了(除非是用于简单的项目),用 _unhandled_input 函数可能更合适;当输入事件没有被其他节点(通常是 GUI Control 节点)处理时,才会调用这个函数,可以确保节点只接收到它该收到的事件。
为了记录场景的层次结构(尤其是在将场景实例化到其他场景时)可以用 owner 属性为节点设置一个“所有者”。它记录的是谁实例化了什么。这在编写编辑器和工具时非常有用。
最后,当一个节点被 Object.free 或 queue_free 释放时,它也将释放它的所有子节点。
分组:节点可以被添加到很多的组中,以方便管理,你可以根据自己游戏的需要来创建类似“敌人”或“收集品”这样的组。见 add_to_group、is_in_group 和 remove_from_group。加入组后,你可以检索这些组中的所有节点,对它们进行迭代,甚至通过 SceneTree 中的方法调用组内方法。
节点的网络编程:在连接到服务器(或制作服务器,见 ENetMultiplayerPeer)之后,可以使用内置的 RPC(远程过程调用)系统在网络上进行通信。在调用 rpc 时传入方法名,将在本地和所有已连接的对等体中调用对应的方法(对等体=客户端和接受连接的服务器)。为了识别哪个节点收到 RPC 调用,Godot 将使用它的 NodePath(请确保所有对等体上的节点名称相同)。另外,请参阅高级网络教程和相应的演示。
注意:script
属性是 Object 类的一部分,不属于 Node。这个属性暴露的方式和其他属性不同,但提供了 setter 和 getter(见 Object.set_script 和 Object.get_script)。
教程¶
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
BitField[ProcessThreadMessages] |
||
|
方法¶
信号¶
child_entered_tree(node: Node) 🔗
当子节点 node
进入 SceneTree 时触发,通常是因为该节点进入了树(参见 tree_entered),或者 add_child 已被调用。
该信号在子节点自己的 NOTIFICATION_ENTER_TREE 和 tree_entered 之后触发。
child_exiting_tree(node: Node) 🔗
当子节点 node
即将退出 SceneTree 时发出,通常是因为该节点正在退出树(请参阅 tree_exiting),或者因为子节点 node
正在被移除或释放。
当收到该信号时,子节点 node
仍然可以在树内访问。该信号在子节点自己的 tree_exiting 和 NOTIFICATION_EXIT_TREE 之后触发。
child_order_chan