Quick answer: Godot CanvasLayer UI showing behind 3D objects? Set CanvasLayer.layer to a higher value than the 3D viewport’s default, and ensure the SubViewport canvas_item isn’t covering it.

A HUD CanvasLayer in a 3D scene renders behind the 3D content. Layer ordering or the SubViewport rendering setup is wrong.

Layer Number

CanvasLayer’s layer defaults to 1. Negative values draw below the world; positive above. Set layer = 10 for HUDs to stay clearly on top of game items at default 1.

SubViewport Containers

If the 3D world is in a SubViewportContainer (e.g. split-screen), the container’s own canvas item draws inside its own CanvasLayer. Place your HUD on a CanvasLayer that draws after the container.

FollowViewportEnable

For per-3D-camera UI (like nameplates), use CanvasLayer.follow_viewport_enable = true with a Camera3D referenced — the layer tracks the camera and renders above its viewport.

Verifying

HUD elements always render above 3D content, including transparent or post-processed effects.

“CanvasLayer.layer decides draw order. Bump it above any container layers.”

Number HUD CanvasLayers explicitly (10 for HUD, 20 for menus, 100 for tooltips) — sparse numbers leave room to insert later without renumbering everything.