跳到主要内容

Node

继承

Object

简要描述

所有 scene 对象的基类。

描述

节点是IdeaXR的构建块。它们可以被分配为另一个节点的子节点,从而形成树形布局。给定节点可以包含任意数量的节点作为子节点,但要求所有兄弟节点(节点的直接子节点)的名称必须唯一。节点树称为scene。场景能够被保存到磁盘,并且能够实例化到其他场景中。这为IdeaXR项目的架构和数据模型提供了非常高的灵活性。

场景树: SceneTree包含活动的节点树。当一个节点被添加到场景树中时,它会接收到NOTIFICATION_ENTER_TREE通知,并触发它的_enter_tree回调。子节点添加总是在父节点之后,也就是说,父节点的_enter_tree回调函数会在子节点之前被触发。一旦将所有节点添加到场景树中,它们就会收到NOTIFICATION_READY通知,并触发它们各自的_ready回调。

这意味着在将节点添加到场景树时,以下顺序将用于回调:父级的_enter_tree,子级的_enter_tree,子级的_ready以及最后的父级_ready

处理:节点可以重载“处理”状态,以便它们在每个帧上收到回调,以请求它们进行处理(执行某些操作)。正常的处理(callback _process,切换set_process)会尽可能快地发生,并且依赖于帧速率,所以处理时间delta作为参数传递。物理处理(callback _physics_process,切换set_physics_process)每秒发生固定次数(默认为60次),对于与物理引擎相关的代码很有用。

节点还可以处理输入事件。当出现时,程序接收到的每个输入都会调用_input函数。在很多情况下,这可能有点过分(除非用于简单的项目),所以_unhandled_input函数可能是首选;当其他任何人(通常是GUI Control节点)没有处理输入事件时,就会调用它,以确保该节点只接收针对它的事件。

为了跟踪场景层次结构(尤其是在将场景实例化为其他场景时),可以使用owner属性为节点设置“所有者”。这可以跟踪谁实例了什么。不过,这在编写编辑器和工具时非常有用。

最后,当使用Object.freequeue_free释放节点时,它还将释放其所有子节点。

组:可以将节点添加到尽可能多的组中,以便于管理,例如,可以根据游戏类型创建“敌人”或“收藏品”之类的组。参见add_to_groupis_in_groupremove_from_group。然后,您可以检索这些组中的所有节点,迭代它们,甚至通过SceneTree上的方法调用组上的方法。

与节点建立网络:连接到服务器(或建立一个服务器后,请参阅[NetworkedMultiplayerENet])之后,可以使用内置的RPC(远程过程调用)系统通过网络进行通信。通过使用方法名调用rpc,它将在本地和所有连接的对等体中被调用(对等体=客户端和接受连接的服务器)。要识别哪个节点接收RPC调用,IdeaXR将使用它的NodePath(确保节点名在所有对等节点上是相同的)。另外,看一看高级网络教程和相应的演示。

成员

类型属性名默认值
MultiplayerAPIcustom_multiplayer
Stringfilename
MultiplayerAPImultiplayer
Stringname
Nodeowner
intpause_mode0
intprocess_priority0

方法

返回值类型方法名称
void_enter_tree() virtual
void_exit_tree() virtual
String_get_configuration_warning() virtual
void_input(event: InputEvent) virtual
void_physics_process(delta: float) virtual
void_process(delta: float) virtual
void_ready() virtual
void_unhandled_input(event: InputEvent) virtual
void_unhandled_key_input(event: InputEventKey) virtual
voidadd_child(node: Node, legible_unique_name: bool = false)
voidadd_child_below_node(node: Node, child_node: Node, legible_unique_name: bool = false)
voidadd_to_group(group: String, persistent: bool = false)
boolcan_process() const
Nodeduplicate(flags: int = 15) const
Nodefind_node(mask: String, recursive: bool = true, owned: bool = true) const
Nodefind_parent(mask: String) const
Nodeget_child(idx: int) const
intget_child_count() const
Arrayget_children() const
Arrayget_groups() const
intget_index() const
intget_network_master() const
Nodeget_node(path: NodePath) const
Arrayget_node_and_resource(path: NodePath)
Nodeget_node_or_null(path: NodePath) const
Nodeget_parent() const
NodePathget_path() const
NodePathget_path_to(node: Node) const
floatget_physics_process_delta_time() const
intget_position_in_parent() const
floatget_process_delta_time() const
boolget_scene_instance_load_placeholder() const
SceneTreeget_tree() const
Viewportget_viewport() const
boolhas_node(path: NodePath) const
boolhas_node_and_resource(path: NodePath) const
boolis_a_parent_of(node: Node) const
boolis_displayed_folded() const
boolis_greater_than(node: Node) const
boolis_in_group(group: String) const
boolis_inside_tree() const
boolis_network_master() const
boolis_physics_processing() const
boolis_physics_processing_internal() const
boolis_processing() const
boolis_processing_input() const
boolis_processing_internal() const
boolis_processing_unhandled_input() const
boolis_processing_unhandled_key_input() const
voidmove_child(child_node: Node, to_position: int)
voidprint_stray_nodes()
voidprint_tree()
voidprint_tree_pretty()
voidpropagate_call(method: String, args: Array = [], parent_first: bool = false)
voidpropagate_notification(what: int)
voidqueue_free()
voidraise()
voidremove_and_skip()
voidremove_child(node: Node)
voidremove_from_group(group: String)
voidreplace_by(node: Node, keep_data: bool = false)
voidrequest_ready()
Variantrpc(method: String, ...) vararg
voidrpc_config(method: String, mode: int)
Variantrpc_id(peer_id: int, method: String, ...) vararg
Variantrpc_unreliable(method: String, ...) vararg
Variantrpc_unreliable_id(peer_id: int, method: String, ...) vararg
voidrset(property: String, value: Variant)
voidrset_config(property: String, mode: int)
voidrset_id(peer_id: int, property: String, value: Variant)
voidrset_unreliable(property: String, value: Variant)
voidrset_unreliable_id(peer_id: int, property: String, value: Variant)
voidset_display_folded(fold: bool)
voidset_network_master(id: int, recursive: bool = true)
voidset_physics_process(enable: bool)
voidset_physics_process_internal(enable: bool)
voidset_process(enable: bool)
voidset_process_input(enable: bool)
voidset_process_internal(enable: bool)
voidset_process_unhandled_input(enable: bool)
voidset_process_unhandled_key_input(enable: bool)
voidset_scene_instance_load_placeholder(load_placeholder: bool)
voidupdate_configuration_warning()

信号

  • **ready**

当节点准备就绪时发出。


  • **renamed**

重命名节点时发出。


  • **tree_entered**

当节点进入树时发出。


  • **tree_exited**

在节点退出树并且不再处于活动状态之后发出。


  • **tree_exiting**

当节点仍处于活动状态但即将退出树时发出。这是反初始化(或者说是“析构函数”)的正确位置。


枚举

enum PauseMode:

  • **PAUSE_MODE_INHERIT = 0**

从节点的父级继承暂停模式。

  • **PAUSE_MODE_STOP = 1**

SceneTree暂停时停止处理。

  • **PAUSE_MODE_PROCESS = 2**

无论SceneTree暂停状态如何,都继续处理。


enum DuplicateFlags:

  • **DUPLICATE_SIGNALS = 1**

复制节点的信号。

  • **DUPLICATE_GROUPS = 2**

复制节点的组。

  • **DUPLICATE_SCRIPTS = 4**

复制节点的脚本。

  • **DUPLICATE_USE_INSTANCING = 8**

使用实例复制。

实例保持与原始实例的链接,因此当原始实例更改时,该实例也随之更改。


常量

  • **NOTIFICATION_ENTER_TREE = 10**

当节点进入SceneTree时收到通知。

  • **NOTIFICATION_EXIT_TREE = 11**

当节点即将退出SceneTree时收到通知。

  • **NOTIFICATION_MOVED_IN_PARENT = 12**

当节点在父节点中移动时收到通知。

  • **NOTIFICATION_READY = 13**

节点准备就绪时收到通知。

  • **NOTIFICATION_PAUSED = 14**

节点暂停时收到通知。

  • **NOTIFICATION_UNPAUSED = 15**

节点取消暂停时收到通知。

  • **NOTIFICATION_PHYSICS_PROCESS = 16**

设置物理过程标记时,每帧都会收到通知(请参阅set_physics_process)。

  • **NOTIFICATION_PROCESS = 17**

设置了处理标志时,每帧都会收到通知(请参阅set_process)。

  • **NOTIFICATION_PARENTED = 18**

当一个节点设置为另一个节点的子节点时收到通知。

注意:这并不意味着节点进入了SceneTree

  • **NOTIFICATION_UNPARENTED = 19**

将节点取消父级(父级将其从子级列表中删除)时收到通知。

  • **NOTIFICATION_INSTANCED = 20**

实例化节点时收到通知。

  • **NOTIFICATION_DRAG_BEGIN = 21**

开始拖动时收到通知。

  • **NOTIFICATION_DRAG_END = 22**

拖动结束时收到通知。

  • **NOTIFICATION_PATH_CHANGED = 23**

节点的NodePath更改时收到通知。

  • **NOTIFICATION_INTERNAL_PROCESS = 25**

设置内部进程标志时,每帧都会收到通知(请参阅set_process_internal)。

  • **NOTIFICATION_INTERNAL_PHYSICS_PROCESS = 26**

设置内部物理过程标记时,每帧都会收到通知(请参阅set_physics_process_internal)。

  • **NOTIFICATION_WM_MOUSE_ENTER = 1002**

当鼠标进入游戏窗口时,从操作系统收到通知。

在桌面和Web平台上实现。

  • **NOTIFICATION_WM_MOUSE_EXIT = 1003**

当鼠标离开游戏窗口时,从操作系统收到通知。

在桌面和Web平台上实现。

  • **NOTIFICATION_WM_FOCUS_IN = 1004**

聚焦游戏窗口时从OS收到通知。

在所有平台上实施。

  • **NOTIFICATION_WM_FOCUS_OUT = 1005**

当游戏窗口未聚焦时,会从OS收到通知。

在所有平台上实施。

  • **NOTIFICATION_WM_QUIT_REQUEST = 1006**

发送退出请求时(例如,使用“关闭”按钮或Alt F4关闭窗口)从操作系统收到通知。

在桌面平台上实现。

  • **NOTIFICATION_WM_GO_BACK_REQUEST = 1007**

发送回退请求时(例如,按Android上的“后退”按钮),从操作系统收到通知。

特定于Android平台。

  • **NOTIFICATION_WM_UNFOCUS_REQUEST = 1008**

当发送散焦请求时(例如另一个OS窗口希望获得焦点),从OS收到通知。

当前没有支持的平台发送此通知。

  • **NOTIFICATION_OS_MEMORY_WARNING = 1009**

当应用程序超出其分配的内存时,从OS收到通知。

特定于iOS平台。

  • **NOTIFICATION_TRANSLATION_CHANGED = 1010**

翻译可能已更改时收到通知。

  • **NOTIFICATION_WM_ABOUT = 1011**

发送有关“关于”信息的请求时,从OS收到通知。

特定于macOS平台。

  • **NOTIFICATION_CRASH = 1012**

引擎即将崩溃时,从IdeaXR的崩溃处理程序收到通知。

如果启用了崩溃处理程序,则在桌面平台上实现。

  • **NOTIFICATION_OS_IME_UPDATE = 1013**

发生输入法引擎更新时从操作系统收到的通知(例如,IME光标位置或组成字符串的更改)。

特定于macOS平台。

  • **NOTIFICATION_APP_RESUMED = 1014**

恢复应用后,会从操作系统收到通知。

特定于Android平台。

  • **NOTIFICATION_APP_PAUSED = 1015**

暂停应用程序时从操作系统收到通知。

特定于Android平台。

成员说明

  • MultiplayerAPI custom_multiplayer
setterset_custom_multiplayer(value)
getterget_custom_multiplayer
  • String filename
setterset_filename(value)
getterget_filename
  • MultiplayerAPI multiplayer
getterget_multiplayer
  • String name
setterset_name(value)
getterget_name
  • Node owner
setterset_owner(value)
getterget_owner
  • int pause_mode
Default0
setterset_pause_mode(value)
getterget_pause_mode
  • int process_priority
Default0
setterset_process_priority(value)
getterget_process_priority

方法说明

  • _enter_tree _enter_tree() virtual

在节点进入SceneTree时调用(例如,在实例化,场景更改时或在脚本中调用add_child之后)。

对应于Object._notification中的NOTIFICATION_ENTER_TREE通知。


  • _exit_tree _exit_tree() virtual

在节点即将离开SceneTree时调用(例如,释放,更改场景或在脚本中调用remove_child之后)。

对应于Object._notification中的NOTIFICATION_EXIT_TREE通知,并发出tree_exiting信号。


  • _get_configuration_warning _get_configuration_warning() virtual

如果覆盖此方法的脚本是tool脚本,则此方法返回的字符串将在Scene Dock中显示为警告。

返回空字符串不会产生任何警告。

需要为此节点更新警告时,请调用update_configuration_warning


  • _input _input(event: InputEvent) virtual

有输入事件时调用。

仅在启用输入处理的情况下才调用它,如果覆盖了此方法,它将自动完成,并且可以使用set_process_input进行切换。

要消耗输入事件并停止将其传播到其他节点,可以调用SceneTree.set_input_as_handled

对于游戏输入,_unhandled_input_unhandled_key_input通常更适合,因为它们允许GUI首先拦截事件。


  • _physics_process _physics_process(delta: float) virtual

在主循环的物理处理步骤中调用。物理处理意味着帧率与物理同步,例如delta变量应该是常量。

仅在启用了物理处理的情况下才调用它,如果重写了此方法,该处理将自动完成,并且可以使用set_physics_process进行切换。

对应于Object._notification中的NOTIFICATION_PHYSICS_PROCESS通知。


  • _process _process(delta: float) virtual

在主循环的处理步骤中调用。

仅当启用处理时才调用它,如果重写了此方法,它将自动完成,并且可以使用set_process进行切换。

对应于Object._notification中的NOTIFICATION_PROCESS通知。


  • _ready _ready() virtual

在节点“就绪”时调用,即在节点及其子节点都进入场景树时调用。也就是说当节点及其子节点都进入场景树时。如果节点有子节点,它们的_ready回调会首先被触发,然后父节点会收到ready通知。

对应于Object._notification中的NOTIFICATION_READY通知。参见onready关键字变量。

通常用于初始化。参见_enter_tree

注意:每个节点只能调用_ready。在从场景树中移除一个节点并再次添加之后,_ready将不会被第二次调用。这可以通过使用[request_ready]请求另一个调用来绕过,该方法可以在再次添加节点之前的任何地方调用。


  • _unhandled_input _unhandled_input(event: InputEvent) virtual

_input或任何GUI尚未使用InputEvent时调用。

仅在启用了未处理的输入处理的情况下才调用它,如果重写了此方法,此处理将自动完成,并且可以使用set_process_unhandled_input进行切换。

要消耗输入事件并停止将其传播到其他节点,可以调用SceneTree.set_input_as_handled

对于游戏输入,此方法和_unhandled_key_input通常比_input更适合,因为它们允许GUI首先拦截事件。


  • _unhandled_key_input _unhandled_key_input(event: InputEventKey) virtual

_input或任何GUI尚未使用InputEventKey时调用。输入事件通过节点树向上传播,直到某个节点使用它。

仅在启用了未处理的键输入处理的情况下才调用它,如果重写了此方法,此处理将自动完成,并且可以使用set_process_unhandled_key_input进行切换。

要消耗输入事件并停止将其传播到其他节点,可以调用SceneTree.set_input_as_handled

对于游戏输入,此方法和_unhandled_input通常比_input更适合,因为它们允许GUI首先拦截事件。


  • add_child add_child(node: Node, legible_unique_name: bool = false)

添加一个子节点。节点可以有任意数量的子节点,但是每个子节点必须有唯一的名称。当父节点被删除时,子节点被自动删除,所以整个场景可以通过删除其最顶层的节点来删除。

如果legible_unique_name为` true [/ode],则子节点将具有基于实例节点名称而不是其类型的可读名称。

注意:如果子节点已经有一个父节点,则该函数将失败。

if child_node.get_parent():
child_node.get_parent().remove_child(child_node)
add_child(child_node)

注意:如果要让子节点坚持到[PackedScene](/docs/api/resource/PackedScene,除了调用[方法add_child]之外,还必须设置add_child。除了调用add_child,还必须设置add_child。如果在未设置owner的情况下调用add_child,则新添加的Node在场景树中不可见,但在2D/3D视图中可见。


  • add_child_below_node add_child_below_node(node: Node, child_node: Node, legible_unique_name: bool = false)

添加一个子节点。子节点位于子节点列表中给定节点的下面。

如果legible_unique_nametrue,则子节点将具有基于实例节点名称而不是其类型的可读名称。


  • add_to_group add_to_group(group: String, persistent: bool = false)

将节点添加到组。群组是命名和组织节点子集的帮手,例如“敌人”或“可收集的东西”。一个节点可以属于任意数量的组。节点可以在任何时候分配一个组,但是直到它们在场景树中才会被添加(参见is_inside_tree)。参见描述中的注释,以及SceneTree中的组方法。

将节点打包到PackedScene并保存到文件时,将使用persistent选项。


  • can_process can_process() const

如果节点可以在场景树暂停期间进行处理,则返回true(请参阅pause_mode)。


  • duplicate duplicate(flags: int = 15) const

复制节点,返回一个新节点。

您可以使用flags来微调行为(请参见DuplicateFlags)。

注意:如果该节点包含带有构造函数参数的脚本(即需要向Object._init方法提供参数),它将无法正常工作。


  • find_node find_node(mask: String, recursive: bool = true, owned: bool = true) const

查找该节点的后代,其名称与String.match中的名称匹配mask(即区分大小写,但“ *” 匹配零个或多个字符,并且"?"匹配除"."外的任何单个字符。)

注意:它不与完整路径匹配,仅与单个节点名称匹配。

如果ownedtrue,则此方法仅查找所有者为该节点的节点。这对于通过脚本实例化的场景尤其重要,因为这些场景没有所有者。


  • find_parent find_parent(mask: String) const

查找名称与mask匹配的当前节点的第一个父节点,如String.match(即区分大小写,但“ *” 匹配零个或多个字符,并且"?"匹配除"."外的任何单个字符。)

注意:它不与完整路径匹配,仅与单个节点名称匹配。


  • get_child get_child(idx: int) const

通过其索引返回子节点(请参见get_child_count)。此方法通常用于迭代节点的所有子节点。

要通过其名称访问子节点,请使用get_node


  • get_child_count get_child_count() const

返回子节点的数量。


  • get_children get_children() const

返回对节点的子节点的引用的数组。


  • get_groups get_groups() const

返回一个数组,列出该节点所属的组。


  • get_index get_index() const

返回节点的索引,即节点在其父级同级中的位置。


  • get_network_master get_network_master() const

返回此节点的网络主机的对等ID。


  • get_node get_node(path: NodePath) const

获取节点。 NodePath可以是一个相对路径(从当前节点)或绝对路径(在场景树)到一个节点。如果路径不存在,则返回null instance,并记录错误。尝试访问返回值上的方法将导致 "尝试访问 一个空实例."错误。

注意:仅当节点在场景树内部时,才可以获取绝对路径(请参见is_inside_tree)。

示例:假设您当前的节点是Character,并且下面的树是:

/root
/root/Character
/root/Character/Sword
/root/Character/Backpack/Dagger
/root/MyGame
/root/Swamp/Alligator
/root/Swamp/Mosquito
/root/Swamp/Goblin

可能的路径是:

get_node("Sword")
get_node("Backpack/Dagger")
get_node("../Swamp/Alligator")
get_node("/root/MyGame")

  • get_node_and_resource get_node_and_resource(path: NodePath)

按照NodePath的子名称指定的方式获取节点及其资源之一(例如Area2D /CollisionShape2D:shape)。

返回值是一个大小为3的数组:第一个索引指向Node(如果找不到,则指向null),第二个索引指向Resource(如果找不到,则指向null),第三个索引是剩下的NodePath(如果有的话)。

例如,假设Area2D /CollisionShape2D是有效节点,并且已为其shape属性分配了RectangleShape2D资源,则可能会有这种输出:

print(get_node_and_resource("Area2D/CollisionShape2D")) # [[CollisionShape2D:1161], Null, ]
print(get_node_and_resource("Area2D/CollisionShape2D:shape")) # [[CollisionShape2D:1161], [RectangleShape2D:1156], ]
print(get_node_and_resource("Area2D/CollisionShape2D:shape:extents")) # [[CollisionShape2D:1161], [RectangleShape2D:1156], :extents]

  • get_node_or_null get_node_or_null(path: NodePath) const

get_node相似,但是如果path没有指向有效的Node,则不会记录错误。


  • get_parent get_parent() const

返回当前节点的父节点,如果该节点缺少父节点,则返回一个空的Node


  • get_path get_path() const

返回当前节点的绝对路径。这仅在当前节点位于场景树内时有效(参见is_inside_tree)。


  • get_path_to get_path_to(node: Node) const

返回从此节点到指定的node的相对NodePath。两个节点必须在同一个场景中,否则函数将失败。


  • get_physics_process_delta_time get_physics_process_delta_time() const

返回自上一个物理绑定帧以来经过的时间(请参见_physics_process)。除非通过Engine.iterations_per_second改变每秒帧数,否则在物理处理中这总是一个常量。


  • get_position_in_parent get_position_in_parent() const

返回场景树分支中节点的顺序。例如,如果在第一个子节点上调用,位置是0


  • get_process_delta_time get_process_delta_time() const

返回自上次进程回调以来经过的时间(以秒为单位)。这个值可能因帧而异。


  • get_scene_instance_load_placeholder get_scene_instance_load_placeholder() const

如果这是实例加载占位符,则返回true


  • get_tree get_tree() const

返回包含此节点的SceneTree


  • get_viewport get_viewport() const

返回节点的Viewport


  • has_node has_node(path: NodePath) const

如果NodePath指向的节点存在,则返回true


  • has_node_and_resource has_node_and_resource(path: NodePath) const

如果NodePath指向有效节点,并且其子名称指向有效资源,则返回true


  • is_a_parent_of is_a_parent_of(node: Node) const

如果给定节点是当前节点的直接或间接子节点,则返回true


  • is_displayed_folded is_displayed_folded() const

如果节点在场景底座中折叠(折叠),则返回true


  • is_greater_than is_greater_than(node: Node) const

如果给定节点在场景层次结构中的出现时间比当前节点晚,则返回true


  • is_in_group is_in_group(group: String) const

如果此节点在指定的组中,则返回true


  • is_inside_tree is_inside_tree() const

如果此节点当前在SceneTree中,则返回true


  • is_network_master is_network_master() const

如果本地系统是此节点的主节点,则返回true


  • is_physics_processing is_physics_processing() const

如果启用了物理处理,则返回true(请参阅set_physics_process)。


  • is_physics_processing_internal is_physics_processing_internal() const

如果启用了内部物理处理,则返回true(请参阅set_physics_process_internal)。


  • is_processing is_processing() const

如果启用了处理,则返回true(请参阅set_process)。


  • is_processing_input is_processing_input() const

如果节点正在处理输入,则返回true(请参阅set_process_input)。


  • is_processing_internal is_processing_internal() const

如果启用了内部处理,则返回true(请参阅set_process_internal)。


  • is_processing_unhandled_input is_processing_unhandled_input() const

如果节点正在处理未处理的输入,则返回true(请参阅set_process_unhandled_input)。


  • is_processing_unhandled_key_input is_processing_unhandled_key_input() const

如果节点正在处理未处理的键输入,则返回true(请参阅set_process_unhandled_key_input)。


  • move_child move_child(child_node: Node, to_position: int)

将子节点移动到其他子节点中的其他位置(顺序)。因为调用、信号等都是按照树的顺序执行的,所以改变子节点的顺序可能是有用的。


  • print_stray_nodes print_stray_nodes()

打印所有杂散节点(SceneTree之外的节点)。


  • print_tree print_tree()

将树打印到标准输出。主要用于调试目的。这个版本显示了相对于当前节点的路径,适合复制/粘贴到get_node函数中。

示例输出:

TheGame
TheGame/Menu
TheGame/Menu/Label
TheGame/Menu/Camera2D
TheGame/SplashScreen
TheGame/SplashScreen/Camera2D

  • print_tree_pretty print_tree_pretty()

print_tree相似,这会将树打印到标准输出。

示例输出:

 ┖╴TheGame
┠╴Menu
┃ ┠╴Label
┃ ┖╴Camera2D
-SplashScreen
┖╴Camera2D

  • propagate_call propagate_call(method: String, args: Array = [], parent_first: bool = false)

使用此节点上args中给定的参数并对其所有子级递归调用给定方法(如果存在)。如果parent_first参数为true,则该方法将首先在当前节点上调用,然后在它的所有子节点上调用。如果parent_firstfalse,则子程序将首先被调用。


  • propagate_notification propagate_notification(what: int)

通过在所有节点上调用Object.notification来递归通知当前节点及其所有子节点。


  • queue_free queue_free()

在当前帧的末尾将要删除的节点排队。删除时,它的所有子节点也将被删除。这个方法确保了删除节点是安全的,这与Object.free相反。使用Object.is_queued_for_deletion来检查节点是否会在帧的末尾被删除。


  • raise raise()

将此节点移动到父节点的子层次结构的底部。这在gui (Control节点)中通常很有用,因为它们的绘制顺序取决于它们在树中的顺序,也就是说,它们在节点列表中越远,绘制的位置就越高。在使用raise之后,一个控件将被绘制在它的兄弟控件之上。


  • remove_and_skip remove_and_skip()

删除节点并将其所有子节点设置为父节点的子节点(如果存在)。通过已删除节点传递的所有事件订阅都将取消订阅。


  • remove_child remove_child(node: Node)

删除子节点。该节点未被删除,需要手动删除。


  • remove_from_group remove_from_group(group: String)

从组中删除节点。参见描述中的注释,以及SceneTree中的组方法。


  • replace_by replace_by(node: Node, keep_data: bool = false)

用给定的节点替换场景中的节点。


  • request_ready request_ready()

请求再次调用_ready。通过此节点的订阅将丢失。注意,该方法不会立即被调用,而是在节点再次添加到场景树时被调度(参见_ready)。_ready只在请求它的节点上被调用,这意味着如果你想要它们也调用_ready,你需要为每一个子节点请求ready(在这种情况下,_ready将会被按照正常的顺序调用)。


  • rpc rpc(method: String, ...) vararg

将给定方法的远程过程调用请求发送到网络上(和本地)的对等方,可以选择将所有其他参数作为参数发送给RPC调用的方法。调用请求只会被具有相同NodePath的节点接收,包括完全相同的节点名。行为取决于给定方法的RPC配置,参见rpc_config。默认情况下,方法不向rpc公开。属性参见rsetrset_config。返回一个空的Variant

注意:仅在收到SceneTreeconnected_to_server信号后,才能安全地在客户端上使用RPC。


  • rpc_config rpc_config(method: String, mode: int)

将给定方法的RPC模式更改为给定mode。看到MultiplayerAPI.RPCMode。另一种方法是用相应的关键字(remotemasterpuppetremotesyncmastersyncpuppetsync)注释方法和属性。默认情况下,方法不向网络(和rpc)公开。属性参见rsetrset_config


  • rpc_id rpc_id(peer_id: int, method: String, ...) vararg

rpc发送到由peer_id标识的特定对等方(请参阅[方法NetworkedMultiplayerPeer.set_target_peer])。


  • rpc_unreliable rpc_unreliable(method: String, ...) vararg

使用不可靠的协议发送rpc


  • rpc_unreliable_id rpc_unreliable_id(peer_id: int, method: String, ...) vararg

使用不可靠的协议将rpc发送到由peer_id标识的特定对等方(请参阅NetworkedMultiplayerPeer.set_target_peer)。


  • rset rset(property: String, value: Variant)

远程更改其他同位体(和本地)上的属性值。行为取决于RPC对给定属性的配置,参见rset_config。关于方法,大部分信息也适用于这个方法。


  • rset_config rset_config(property: String, mode: int)

将给定属性的RPC模式更改为给定mode。看到MultiplayerAPI.RPCMode。另一种方法是用相应的关键字(remotemasterpuppetremotesyncmastersyncpuppetsync)注释方法和属性。默认情况下,属性不向网络(和rpc)公开。方法参见rpcrpc_config


  • rset_id rset_id(peer_id: int, property: String, value: Variant)

peer_id所标识的特定对等方上远程更改属性的值(请参阅[方法NetworkedMultiplayerPeer.set_target_peer])。


  • rset_unreliable rset_unreliable(property: String, value: Variant)

使用不可靠的协议远程更改其他对等方(和本地)的属性值。


  • rset_unreliable_id rset_unreliable_id(peer_id: int, property: String, value: Variant)

使用不可靠的协议远程更改由peer_id标识的特定同级上的属性值(请参阅NetworkedMultiplayerPeer.set_target_peer)。


  • set_display_folded set_display_folded(fold: bool)

设置场景管理器中节点的折叠状态。


  • set_network_master set_network_master(id: int, recursive: bool = true)

将节点的网络主节点设置为具有给定对等ID的对等节点。


  • set_physics_process set_physics_process(enable: bool)

启用或禁用物理(即固定帧频)处理。当一个节点正在被处理时,它将以固定的速率(通常是60 FPS,参见Engine)接收NOTIFICATION_PHYSICS_PROCESS。(如果存在的话,将调用method_physics_process(#method_physics_process)回调函数)。如果method_physics_process(#method_physics_process)被覆盖,将自动启用。在_ready之前的任何调用都会被忽略。


  • set_physics_process_internal set_physics_process_internal(enable: bool)

启用或禁用此节点的内部物理。内部物理处理与正常的_physics_process调用是隔离的,一些内部节点使用它来保证正常的功能,即使节点被暂停或者物理处理因脚本(set_physics_process)而被禁用。只对操作内置节点行为的高级用途有用。


  • set_process set_process(enable: bool)

启用或禁用处理。当一个节点正在被处理时,它将在每个绘制的帧上接收到一个NOTIFICATION_PROCESS(如果存在_process回调函数将被调用)。如果[方法_process]被覆盖,将自动启用。在_ready之前的任何调用都会被忽略。


  • set_process_input set_process_input(enable: bool)

启用或禁用输入处理。 这对于GUI控件是不需要的! 当_input被覆盖时自动启用。在_ready之前的任何调用都会被忽略。


  • set_process_internal set_process_internal(enable: bool)

启用或禁用此节点的内部处理。内部处理与正常的_process调用是隔离的,一些节点内部使用它来保证正常的功能,即使节点被暂停或者由于脚本(set_process)而无法处理。只对操作内置节点行为的高级用途有用。


  • set_process_unhandled_input set_process_unhandled_input(enable: bool)

启用未处理的输入处理。 这对于GUI控件是不需要的!它使节点能够接收以前没有处理过的所有输入(通常是由Control处理的)。如果_unhandled_input被覆盖,则自动启用。在_ready之前的任何调用都会被忽略。


  • set_process_unhandled_key_input set_process_unhandled_key_input(enable: bool)

启用未处理的按键输入处理。如果_unhandled_key_input被覆盖,则自动启用。在_ready之前的任何调用都会被忽略。


  • set_scene_instance_load_placeholder set_scene_instance_load_placeholder(load_placeholder: bool)

设置这是否是实例加载占位符。


  • update_configuration_warning update_configuration_warning()

更新在Scene Dock中为此节点显示的警告。

使用_get_configuration_warning设置要显示的警告消息。