CanvasLayer
用于 2D 场景中的对象的独立渲染的节点。
描述
CanvasLayer 的直接或间接子节点中,派生自 CanvasItem 的节点会在该图层中进行绘制。图层是定义绘制顺序的数字索引。默认 2D 场景使用的索引为 0
,因此索引为 -1
的 CanvasLayer 会在下方绘制,而索引为 1
的 CanvasLayer 会在上方绘制。无论节点在图层中的 CanvasItem.z_index 是多少,这一顺序都成立。
CanvasLayer 可以隐藏,也可以跟随视口。因此常用于血条等 HUD(位于 1
或更高的图层上)和背景(位于 -1
或更低的图层上)。
注意:嵌入式 Window 位于 1024
图层。位于 1025
或更高图层的 CanvasItem 会显示在嵌入式窗口之上。
注意:每个 CanvasLayer 都是在一个特定的 Viewport 中绘制的,不能在多个 Viewport 之间共享,见 custom_viewport。使用多个 Viewport 时,例如分屏游戏中,你需要为每个想要绘制的 Viewport 创建一个单独的 CanvasLayer。
教程
属性
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
方法
get_canvas() const | |
get_final_transform() const | |
void | hide() |
void | show() |
信号
visibility_changed() 🔗
当该层的可见性发生变化时触发。请参阅 visible。
属性说明
分配给该 CanvasLayer 的自定义 Viewport 节点。如果为 null
,则使用默认的视口。
bool follow_viewport_enabled = false
🔗
启用时,该 CanvasLayer 会使用视口的变换,所以它会随相机移动,而不是保持在屏幕上的某个固定位置。
与 follow_viewport_scale 配合可以实现伪 3D 效果。
float follow_viewport_scale = 1.0
🔗
使用 follow_viewport_enabled 时缩放图层。移入到前景的图层应具有增加的缩放,而移入到背景的图层应具有减小的缩放。
画布层的索引,用于确定绘制顺序。索引值小的画布层绘制在索引值大的画布层后面。
注意:如果多个 CanvasLayer 的画布层索引相同,一个 CanvasLayer 的 CanvasItem 子节点都会绘制在另一个 CanvasLayer 的 CanvasItem 子节点之后。哪个 CanvasLayer 画在前面并不一定。
Vector2 offset = Vector2(0, 0)
🔗
图层的基本偏移量。
图层的旋转弧度。
Vector2 scale = Vector2(1, 1)
🔗
图层的缩放。
Transform2D transform = Transform2D(1, 0, 0, 1, 0, 0)
🔗
void set_transform(value: Transform2D)
Transform2D get_transform()
图层的变换。
为 false
时,该 CanvasLayer 下的所有 CanvasItem 都会被隐藏。
与 CanvasItem.visible 不同,CanvasLayer 的显示与否不会传播到其内部的层。
方法说明
返回此层使用的画布的 RID。
Transform2D get_final_transform() const 🔗
返回从 CanvasLayer 坐标系到 Viewport 坐标系的变换。
void hide() 🔗
隐藏该 CanvasLayer 下的所有 CanvasItem。相当于将 visible 设为 false
。
void show() 🔗
显示该 CanvasLayer 下的所有 CanvasItem。相当于将 visible 设为 true
。