在 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 foo
和 bar
。那么,在Foo.cs
中,我是否可以访问container
节点的注入器,如下所示:
// Foo.cs
Node2D container = (Node2D)GetNode("/root/container");
或者这会失败吗?
环境
- 戈多单声道 3.2
- Mono JIT 编译器 6.4.0
- Manjaro 19.0.2
When I GetNode, do I actually access these runtime nodes?
您可以使用 GetNode
访问在运行时创建的节点。如果节点实际上是在 _Ready
回调被调用后添加的,请确保不要太早添加。
很多内置的Godot节点都会实例化子节点(主要是GraphEdit等复杂的GUI控件。)
今天发现Godot居然设置了运行时间节点。你可以在下面看到我的意思:
当我 运行 带有调试选项的游戏时,我可以在场景停靠栏的 "Remote" 选项卡下看到这些节点。所以,这让我想知道......当我 GetNode
时,我是否真的访问了这些 运行 时间节点?
举个例子,考虑这三个独立的场景:
Foo
> foo: Node2D
Bar
> bar: Node2D
Container
> container: Node2D
>> foo: Node2D (injecting Foo)
>> bar: Node2D (injecting Bar)
在这种情况下,Container
场景是父场景,importing/injecting foo
和 bar
。那么,在Foo.cs
中,我是否可以访问container
节点的注入器,如下所示:
// Foo.cs
Node2D container = (Node2D)GetNode("/root/container");
或者这会失败吗?
环境
- 戈多单声道 3.2
- Mono JIT 编译器 6.4.0
- Manjaro 19.0.2
When I GetNode, do I actually access these runtime nodes?
您可以使用 GetNode
访问在运行时创建的节点。如果节点实际上是在 _Ready
回调被调用后添加的,请确保不要太早添加。
很多内置的Godot节点都会实例化子节点(主要是GraphEdit等复杂的GUI控件。)