← Back to blog

Mobile HUD Information Hierarchy: What to Show in Combat, Lobby, and Modals

HUD visibility and priority by game state; how it ties to Safe Area, floating text layers, and modal stacking—spec tables plus Play and device acceptance steps.

Published
  • game-ui-design
  • game-dev-ai
  • ui-to-engine
  • hud
  • mobile
  • unity
  • godot
  • cocos
  • vberai
  • 2026
Mobile HUD Information Hierarchy: What to Show in Combat, Lobby, and Modals

HUD failures are rarely “we forgot a health bar”—they are too many same-priority elements on one screen: lobby tabs during combat, a tappable shop over a cinematic, or underlying HUD still eating taps when a modal is open. Design mocks are often single-frame and never mark “hide currency in combat”—you need a state × layer spec so engineering can land visibility, input blocking, and draw order.

Below uses Unity UGUI (Prefab, Canvas.sortingOrder, Graphic raycasts) as the main wording. Godot: CanvasLayer layer + Control mouse_filter; Cocos: node draw order + BlockInputEvents / full-screen blockers—same criteria and tables. Safe Area, floating text, and Canvas ordering details: Safe Area, floating damage numbers. Device, all locales, and Release builds: pre-ship checklist items 1, 2, and 5.

Fail criteria (any one = not passed): during modal / cinematic / payment flows, underlying HUD still interactive (unless spec says “half-screen still operable”); in combat, non-combat promo that cannot be dismissed blocks the play area; the same info shown twice (e.g. top-bar coins plus large in-combat coin UI) with no product note; controls from the previous state remain (visible or still raycast-blocking); with multilingual stress locales, combat-minimal layout still clips long copy (DE/ES, etc.).


Define states first, then controls

Game state (examples)HUD goalUsually showUsually hide / degrade
Lobby / homeNav + resources + eventsTop currency, bottom tabs, event entryCombat skills, crosshair
Combat / in-levelActions + survival infoHealth, skills, pauseLobby tabs, full-screen event banners
Cinematic / CGNo input or skip onlySkip buttonNearly all HUD (or skip only)
Modal (shop, settings)Focus on dialogIn-modal controlsUnderlying HUD raycasts off or whole layer hidden
Payment / complianceFinish flowTerms, confirmIn-game promo overlays

Agree the state enum with design + engineering (e.g. GameUIState.Lobby | Combat | Cinematic | Modal). UI roots subscribe to the state machine (Unity Prefab groups / Godot scene branches / Cocos prefabs)—avoid scattered SetActive / visible on every button script.

Lobby vs combat: tabs and event entry should hide in combat


Layers and sort order (engine-neutral spec)

Document bottom to top (higher number = in front):

LayerContentInput
L0Full-screen background / scene UI bleedNone
L1Combat HUD (health, joystick placeholder)Yes
L2Combat floating text / tipsNo raycasts (see floating damage numbers)
L3System toast / marqueeUsually none
L4Modal / full-screen dialogYes; blocks L1–L3 taps
L5Network drop, forced updateYes; blocks all

Unity: sortingOrder / multiple Canvases; Godot: CanvasLayer layer; Cocos: sibling order under one Canvas or layered Canvas + mask. When a modal opens, raise L4 and disable L1 raycasts / mouse_filter / BlockInput—not just “drawn on top but taps pass through.”

L0–L5 stack: floating text non-interactive, modal blocks combat HUD


Information priority (combat example)

If combat can only keep N readable blocks on small screens, default caps:

PriorityBlockDegrade strategy
P0Health / fail-condition relatedDo not hide
P0Pause / exit combatDo not hide
P1Skills / primary actionsMerge to fewer buttons
P2Short objective textIcon + long-press detail
P3Currency, event entryHidden in combat by default or in pause menu
P3Chat entryCollapse to icon

Degrades must stay readable in multilingual stress locales (DE/ES, etc.)—not English-only shrink tests.

Combat P0–P3: hide currency/events by default, keep health and pause


Acceptance (5 steps)

  1. List states — From main flow, enumerate transitions (enter level, open shop, CG, reconnect).
  2. Screenshot per state — Editor Play and device Release each (pre-ship items 1 and 5); verify nodes with SetActive(false) / visible=false still block input.
  3. Modal spot-check — With shop / settings / payment open, taps on former HUD buttons must do nothing (full-screen transparent raycast or BlockInput mask).

Modal open: wrong (tap through combat button) vs correct (underlying blocked)

  1. Cross with Safe Area — Combat P0 controls inside safe inset (see Safe Area).
  2. Commit versioned assets — State table drives visibility (Unity ScriptableObject / Godot Resource / Cocos config)—not Scene-only temporary hides.

What design should add

DeliverablePurpose
Per-state wireframes (at least Lobby / Combat / Modal)Engineering configures visibility
Combat “may hide” list on mockAvoid painting every element on one frame
Modal spec: dimmed background, tap-through allowed?Sets raycast policy
Promo / event layer z-orderAlign with L4/L5

Designers need not write the state machine—tables + annotations reduce guesswork.


Fix routing

SymptomLikely causeActionOwner
Can still tap combat after dialogUnderlying raycasts onDisable Graphic raycast on modal layer / full-screen maskEngineering
Full-screen event in combatNo state tableHide P3 in combat; design sign-offEngineering + design
HUD left after cinematicNo Cinematic state hookState machine hides HUD uniformlyEngineering
Two currency displaysLobby bar not off in combatHide top bar in Combat or merge data sourceEngineering + design
Long locale clips in combat minimal layoutDE/ES not testedLocale overflow pathDesign + engineering

FAQ

Two Canvases for lobby and combat?
Fine—or one Canvas with groups. What matters is state visibility + raycasts, not Canvas count.

Half-screen shop—is that a modal?
Yes. Spec whether underlying is tappable and whether combat logic pauses.

Conflicts with “less is more” UX?
The hierarchy table is a product rule, not aesthetics; P3 can reopen for events via state machine flags.

World-space overhead bars in 3D?
They are combat info, managed with L1; world-space sort rules align with floating damage numbers and Safe Area guidance.

More guides you might like