CanvasLayer
A node used for independent rendering of objects within a 2D scene.
A node used for independent rendering of objects within a 2D scene.
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.ZIndex 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 CanvasLayer.CustomViewport. 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.
Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.
Constructors1
CanvasLayerConstructor
public CanvasLayer();Properties9
CustomViewportProperty
public Entity CustomViewport { get; set; }The custom Viewport node assigned to the CanvasLayer. If null, uses the default viewport instead.
FollowViewportEnabledProperty
public bool FollowViewportEnabled { get; set; }If enabled, the CanvasLayer maintains its position in world space. If disabled, the CanvasLayer stays in a fixed position on the screen.
Together with CanvasLayer.FollowViewportScale, this can be used for a pseudo-3D effect.
FollowViewportScaleProperty
public float FollowViewportScale { get; set; }Scales the layer when using CanvasLayer.FollowViewportEnabled. Layers moving into the foreground should have increasing scales, while layers moving into the background should have decreasing scales.
LayerProperty
public int Layer { get; set; }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.CanvasLayerMin and RenderingServer.CanvasLayerMax (inclusive). Any other value will wrap around.
OffsetProperty
public Vector2 Offset { get; set; }The layer's base offset.
RotationProperty
public float Rotation { get; set; }The layer's rotation in radians.
ScaleProperty
public Vector2 Scale { get; set; }The layer's scale.
TransformProperty
public Transform2D Transform { get; set; }The layer's transform.
VisibleProperty
public bool Visible { get; set; }If false, any CanvasItem under this CanvasLayer will be hidden.
Unlike CanvasItem.Visible, visibility of a CanvasLayer isn't propagated to underlying layers.
Methods22
GetCanvasRid
public Rid GetCanvas();Returns the RID of the canvas used by this layer.
RidGetCustomViewportEntity
public Entity GetCustomViewport();EntityGetFinalTransformTransform2D
public Transform2D GetFinalTransform();Returns the transform from the CanvasLayer's coordinate system to the Viewport's coordinate system.
Transform2DGetFollowViewportScalefloat
public float GetFollowViewportScale();floatGetLayerint
public int GetLayer();intGetOffsetVector2
public Vector2 GetOffset();Vector2GetRotationfloat
public float GetRotation();floatGetScaleVector2
public Vector2 GetScale();Vector2GetTransformTransform2D
public Transform2D GetTransform();Transform2DHidevoid
public void Hide();Hides any CanvasItem under this CanvasLayer. This is equivalent to setting CanvasLayer.Visible to false.
IsFollowingViewportbool
public bool IsFollowingViewport();boolIsVisiblebool
public bool IsVisible();boolSetCustomViewportvoid
public void SetCustomViewport(Entity viewport);| Name | Type | Default |
|---|---|---|
viewport | Entity | — |
SetFollowViewportvoid
public void SetFollowViewport(bool enable);| Name | Type | Default |
|---|---|---|
enable | bool | — |
SetFollowViewportScalevoid
public void SetFollowViewportScale(float scale);| Name | Type | Default |
|---|---|---|
scale | float | — |
SetLayervoid
public void SetLayer(int layer);| Name | Type | Default |
|---|---|---|
layer | int | — |
SetOffsetvoid
public void SetOffset(Vector2 offset);| Name | Type | Default |
|---|---|---|
offset | Vector2 | — |
SetRotationvoid
public void SetRotation(float radians);| Name | Type | Default |
|---|---|---|
radians | float | — |
SetScalevoid
public void SetScale(Vector2 scale);| Name | Type | Default |
|---|---|---|
scale | Vector2 | — |
SetTransformvoid
public void SetTransform(Transform2D transform);| Name | Type | Default |
|---|---|---|
transform | Transform2D | — |
SetVisiblevoid
public void SetVisible(bool visible);| Name | Type | Default |
|---|---|---|
visible | bool | — |
Showvoid
public void Show();Shows any CanvasItem under this CanvasLayer. This is equivalent to setting CanvasLayer.Visible to true.
Signals and events1
VisibilityChangedEvent
public event Action VisibilityChanged;Emitted when visibility of the layer is changed. See CanvasLayer.Visible.