在 Godot 中,当我获取节点时,我访问的是运行时节点还是当前场景的节点?

In Godot, when I GetNode, do I access runtime nodes or the nodes of the current scene?

今天发现Godot居然设置了运行时间节点。你可以在下面看到我的意思:

当我 运行 带有调试选项的游戏时,我可以在场景停靠栏的 "Remote" 选项卡下看到这些节点。所以,这让我想知道......当我 GetNode 时,我是否真的访问了这些 运行 时间节点?

举个例子,考虑这三个独立的场景:

Foo
> foo: Node2D

Bar
> bar: Node2D

Container
> container: Node2D
>> foo: Node2D (injecting Foo)
>> bar: Node2D (injecting Bar)

在这种情况下,Container 场景是父场景,importing/injecting foobar。那么,在Foo.cs中,我是否可以访问container节点的注入器,如下所示:

// Foo.cs
Node2D container = (Node2D)GetNode("/root/container");

或者这会失败吗?


环境

When I GetNode, do I actually access these runtime nodes?

您可以使用 GetNode 访问在运行时创建的节点。如果节点实际上是在 _Ready 回调被调用后添加的,请确保不要太早添加。

很多内置的Godot节点都会实例化子节点(主要是GraphEdit等复杂的GUI控件。)