Godot:创建实例化场景(texturebutton)并使其出现在前台
Godot: Create instanced scene (texturebutton) and make it come to the foreground
除了我的实例化按钮显示在最底层之外,我已经解决了所有问题。我的地图(texturerect)绘制在它们上方。如何通过代码指示 Godot 在特定节点上绘制这些新按钮?
在 2D 中,默认情况下,绘制顺序是场景树顺序。首先绘制靠近三者顶部的事物。子项绘制在其父项 Node
的顶部 after/on。
您可以通过多种方式操纵此顺序。例如:
- 当然要更改场景树中
Node
的顺序。
- 您可以使用
YSort
让 Sprite
和其他 Node2D
根据他们的 y
位置按顺序绘制。
- 您可以在
Node2D
上使用 z_index
使事物比其他方式画得更远。作为替代方案,您可以使用 VisualServer.canvas_item_set_z_index
,它也适用于 Control
s.
- 您可以在
CanvasItem
(Node2D
或 Control
)上使用 show_on_top
和 show_behind_parent
使其显示在其父 Node
.
- 您可以在
CanvasLayer
中组织您的元素,这些元素按 layer
编号的顺序绘制。
这是经常被建议将UI与游戏世界分开的最后一个。为您的所有 UI 物品准备一个 CanvasLayer
,为您的游戏世界准备另一个 CanvasLayer
。这样做的另一个特点是 Camera2D
放在 CanvasLayer
中不会影响其他。因此 UI 可以保持原位,无论游戏世界摄像机移动如何 - 这对 HUD 很有用 - 例如。
我要建议的另一件事是不要直接从游戏世界中操纵 UI。不仅因为它使组织 UI 变得尴尬,而且因为这意味着更新 UI 需要修改游戏世界代码(即改变游戏的外观需要改变游戏的行为)。相反,让游戏世界代码在您需要更新 UI 时发出信号,并在适合更新 UI 的地方接收这些信号。此外,您可以通过自动加载路由所有信号(即 /event bus)。
除了我的实例化按钮显示在最底层之外,我已经解决了所有问题。我的地图(texturerect)绘制在它们上方。如何通过代码指示 Godot 在特定节点上绘制这些新按钮?
在 2D 中,默认情况下,绘制顺序是场景树顺序。首先绘制靠近三者顶部的事物。子项绘制在其父项 Node
的顶部 after/on。
您可以通过多种方式操纵此顺序。例如:
- 当然要更改场景树中
Node
的顺序。 - 您可以使用
YSort
让Sprite
和其他Node2D
根据他们的y
位置按顺序绘制。 - 您可以在
Node2D
上使用z_index
使事物比其他方式画得更远。作为替代方案,您可以使用VisualServer.canvas_item_set_z_index
,它也适用于Control
s. - 您可以在
CanvasItem
(Node2D
或Control
)上使用show_on_top
和show_behind_parent
使其显示在其父Node
. - 您可以在
CanvasLayer
中组织您的元素,这些元素按layer
编号的顺序绘制。
这是经常被建议将UI与游戏世界分开的最后一个。为您的所有 UI 物品准备一个 CanvasLayer
,为您的游戏世界准备另一个 CanvasLayer
。这样做的另一个特点是 Camera2D
放在 CanvasLayer
中不会影响其他。因此 UI 可以保持原位,无论游戏世界摄像机移动如何 - 这对 HUD 很有用 - 例如。
我要建议的另一件事是不要直接从游戏世界中操纵 UI。不仅因为它使组织 UI 变得尴尬,而且因为这意味着更新 UI 需要修改游戏世界代码(即改变游戏的外观需要改变游戏的行为)。相反,让游戏世界代码在您需要更新 UI 时发出信号,并在适合更新 UI 的地方接收这些信号。此外,您可以通过自动加载路由所有信号(即