Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

CanvasLayer

繼承: Node < Object

被繼承: ParallaxBackground

用於 2D 場景中的物件的獨立算繪的節點。

說明

CanvasItem-derived nodes that are direct or indirect children of a CanvasLayer will be drawn in that layer. The layer is a numeric index that defines the draw order. The default 2D scene renders with index 0, so a CanvasLayer with index -1 will be drawn below, and a CanvasLayer with index 1 will be drawn above. This order will hold regardless of the CanvasItem.z_index of the nodes within each layer.

CanvasLayers can be hidden and they can also optionally follow the viewport. This makes them useful for HUDs like health bar overlays (on layers 1 and higher) or backgrounds (on layers -1 and lower).

Note: Embedded Windows are placed on layer 1024. CanvasItems on layers 1025 and higher appear in front of embedded windows.

Note: Each CanvasLayer is drawn on one specific Viewport and cannot be shared between multiple Viewports, see custom_viewport. When using multiple Viewports, for example in a split-screen game, you need to create an individual CanvasLayer for each Viewport you want it to be drawn on.

教學

屬性

Node

custom_viewport

bool

follow_viewport_enabled

false

float

follow_viewport_scale

1.0

int

layer

1

Vector2

offset

Vector2(0, 0)

float

rotation

0.0

Vector2

scale

Vector2(1, 1)

Transform2D

transform

Transform2D(1, 0, 0, 1, 0, 0)

bool

visible

true

方法

RID

get_canvas() const

Transform2D

get_final_transform() const

void

hide()

void

show()


訊號

visibility_changed() 🔗

當該層的可見性發生變化時觸發。請參閱 visible


屬性說明

Node custom_viewport 🔗

  • void set_custom_viewport(value: Node)

  • Node get_custom_viewport()

分配給該 CanvasLayer 的自訂 Viewport 節點。如果為 null,則使用預設的視口。


bool follow_viewport_enabled = false 🔗

  • void set_follow_viewport(value: bool)

  • bool is_following_viewport()

If enabled, the CanvasLayer maintains its position in world space. If disabled, the CanvasLayer stays in a fixed position on the screen.

Together with follow_viewport_scale, this can be used for a pseudo-3D effect.


float follow_viewport_scale = 1.0 🔗

  • void set_follow_viewport_scale(value: float)

  • float get_follow_viewport_scale()

使用 follow_viewport_enabled 時縮放圖層。移入到前景的圖層應具有增加的縮放,而移入到背景的圖層應具有減小的縮放。


int layer = 1 🔗

  • void set_layer(value: int)

  • int get_layer()

Layer index for draw order. Lower values are drawn behind higher values.

Note: If multiple CanvasLayers have the same layer index, CanvasItem children of one CanvasLayer are drawn behind the CanvasItem children of the other CanvasLayer. Which CanvasLayer is drawn in front is non-deterministic.

Note: The layer index should be between RenderingServer.CANVAS_LAYER_MIN and RenderingServer.CANVAS_LAYER_MAX (inclusive). Any other value will wrap around.


Vector2 offset = Vector2(0, 0) 🔗

圖層的基本偏移量。


float rotation = 0.0 🔗

  • void set_rotation(value: float)

  • float get_rotation()

圖層的旋轉弧度。


Vector2 scale = Vector2(1, 1) 🔗

圖層的縮放。


Transform2D transform = Transform2D(1, 0, 0, 1, 0, 0) 🔗

圖層的變換。


bool visible = true 🔗

  • void set_visible(value: bool)

  • bool is_visible()

false 時,該 CanvasLayer 下的所有 CanvasItem 都會被隱藏。

CanvasItem.visible 不同,CanvasLayer 的顯示與否不會傳播到其內部的層。


方法說明

RID get_canvas() const 🔗

返回此層使用的畫布的 RID。


Transform2D get_final_transform() const 🔗

返回從 CanvasLayer 坐標系到 Viewport 坐標系的變換。


void hide() 🔗

隱藏該 CanvasLayer 下的所有 CanvasItem。相當於將 visible 設為 false


void show() 🔗

顯示該 CanvasLayer 下的所有 CanvasItem。相當於將 visible 設為 true