← Torna al blog

Gerarchia delle informazioni nell'HUD mobile: cosa mostrare in combattimento, lobby e modali

Visibilità e priorità dell'HUD per stato di gioco; legame con Safe Area, livelli di testo fluttuante e impilamento dei modali—tabelle più passi di accettazione su Play e dispositivo.

Pubblicato
  • game-ui-design
  • game-dev-ai
  • ui-to-engine
  • hud
  • mobile
  • unity
  • godot
  • cocos
  • vberai
  • 2026
Gerarchia delle informazioni nell'HUD mobile: cosa mostrare in combattimento, lobby e modali

I fallimenti dell’HUD raramente sono “ci siamo dimenticati una barra della salute”—sono troppi elementi con la stessa priorità su una sola schermata: schede della lobby durante il combattimento, uno shop toccabile sopra una cinematic, oppure l’HUD sottostante che continua a intercettare i tap quando un modale è aperto. I mock di design sono spesso a frame singolo e non indicano mai “nascondi la valuta in combattimento”—serve una specifica stato × livello così l’engineering può definire visibilità, blocco dell’input e ordine di disegno.

Qui sotto si usa Unity UGUI (Prefab, Canvas.sortingOrder, raycast delle Graphic) come terminologia principale. Godot: CanvasLayer layer + Control mouse_filter; Cocos: ordine di disegno dei nodi + BlockInputEvents / blocker a schermo intero—stessi criteri e tabelle. Dettagli su Safe Area, testo fluttuante e ordinamento dei Canvas: Safe Area, numeri di danno fluttuanti. Dispositivo, tutte le lingue e build Release: checklist pre-lancio punti 1, 2 e 5.

Criteri di fallimento (uno solo = non superato): durante flussi modali / cinematic / di pagamento, l’HUD sottostante è ancora interattivo (a meno che la specifica non dica “metà schermo ancora operabile”); in combattimento, una promo non di combattimento non dismissibile blocca l’area di gioco; le stesse informazioni mostrate due volte (es. monete nella barra superiore più una grande UI monete in combattimento) senza nota di prodotto; controlli dello stato precedente che rimangono (visibili o ancora bloccanti per i raycast); con le lingue di stress multilingua, il layout minimale di combattimento ritaglia comunque testi lunghi (DE/ES, ecc.).


Definire prima gli stati, poi i controlli

Stato di gioco (esempi)Obiettivo HUDDi solito mostrareDi solito nascondere / degradare
Lobby / homeNavigazione + risorse + eventiValuta in alto, schede in basso, ingresso eventiAbilità di combattimento, mirino
Combattimento / in-livelloAzioni + info di sopravvivenzaSalute, abilità, pausaSchede lobby, banner eventi a schermo intero
Cinematic / CGNessun input o solo skipPulsante skipQuasi tutto l’HUD (o solo skip)
Modale (shop, impostazioni)Focus sul dialogoControlli nel modaleHUD sottostante raycast disattivati o intero livello nascosto
Pagamento / complianceCompletare il flussoTermini, confermaOverlay promozionali in-game

Concordare l’enum degli stati con design + engineering (es. GameUIState.Lobby | Combat | Cinematic | Modal). Le radici UI si iscrivono alla state machine (gruppi di Prefab Unity / rami di scena Godot / prefab Cocos)—evitando SetActive / visible sparsi su ogni script di pulsante.

Lobby vs combattimento: schede e ingresso eventi dovrebbero nascondersi in combattimento


Livelli e ordine di sort (specifica engine-neutral)

Documentare dal basso verso l’alto (numero più alto = davanti):

LivelloContenutoInput
L0Sfondo a schermo intero / bleed della scena UINessuno
L1HUD di combattimento (salute, placeholder joystick)Sì
L2Testo fluttuante / suggerimenti di combattimentoNessun raycast (numeri di danno fluttuanti)
L3Toast di sistema / marqueeDi solito nessuno
L4Modale / dialogo a schermo interoSì; blocca i tap di L1–L3
L5Caduta di rete, aggiornamento forzatoSì; blocca tutto

Unity: sortingOrder / più Canvas; Godot: CanvasLayer layer; Cocos: ordine dei sibling sotto un Canvas oppure Canvas a livelli + maschera. Quando si apre un modale, alzare L4 e disabilitare i raycast di L1 / mouse_filter / BlockInput—non solo “disegnato sopra ma i tap passano attraverso”.

Stack L0–L5: testo fluttuante non interattivo, il modale blocca l'HUD di combattimento


Priorità delle informazioni (esempio di combattimento)

Se il combattimento può mantenere solo N blocchi leggibili su schermi piccoli, limiti predefiniti:

PrioritàBloccoStrategia di degradazione
P0Salute / legato alla condizione di fallimentoNon nascondere
P0Pausa / uscita dal combattimentoNon nascondere
P1Abilità / azioni primarieUnire in meno pulsanti
P2Testo obiettivo breveIcona + dettaglio con pressione lunga
P3Valuta, ingresso eventiNascosti in combattimento per default o nel menu pausa
P3Ingresso chatCollassare a icona

Le degradazioni devono restare leggibili nelle lingue di stress multilingua (DE/ES, ecc.)—non test di riduzione solo in inglese.

Combattimento P0–P3: nascondere valuta/eventi per default, mantenere salute e pausa


Accettazione (5 passi)

  1. Elencare gli stati — Dal flusso principale, enumerare le transizioni (entrare nel livello, aprire lo shop, CG, riconnessione).
  2. Screenshot per stato — Editor Play e device Release ciascuno (punti pre-lancio 1 e 5); verificare che i nodi con SetActive(false) / visible=false blocchino comunque l’input.
  3. Spot-check dei modali — Con shop / impostazioni / pagamento aperti, i tap sui precedenti pulsanti dell’HUD non devono fare nulla (raycast trasparente a schermo intero o maschera BlockInput).

Modale aperto: sbagliato (tap attraverso il pulsante di combattimento) vs corretto (sottostante bloccato)

  1. Incrociare con la Safe Area — Controlli P0 di combattimento dentro il safe inset (Safe Area).
  2. Committare asset versionati — La tabella degli stati guida la visibilità (Unity ScriptableObject / Godot Resource / config Cocos)—non nascondimenti temporanei solo in Scene.

Cosa dovrebbe aggiungere il design

DeliverableScopo
Wireframe per stato (almeno Lobby / Combattimento / Modale)L’engineering configura la visibilità
Lista “può nascondersi” del combattimento sul mockEvitare di disegnare ogni elemento su un solo frame
Specifica modale: sfondo oscurato, tap-through consentito?Definisce la policy dei raycast
z-order del livello promo / eventiAllineare con L4/L5

I designer non devono scrivere la state machine—tabelle + annotazioni riducono le congetture.


Routing delle correzioni

SintomoCausa probabileAzioneOwner
Si può ancora toccare il combattimento dopo il dialogoRaycast sottostanti attiviDisabilitare il raycast delle Graphic sul livello modale / maschera a schermo interoEngineering
Evento a schermo intero in combattimentoNessuna tabella degli statiNascondere P3 in combattimento; approvazione del designEngineering + design
HUD rimasto dopo la cinematicNessun hook dello stato CinematicLa state machine nasconde l’HUD in modo uniformeEngineering
Due display di valutaBarra lobby non disattivata in combattimentoNascondere la barra superiore in Combattimento o unire la fonte datiEngineering + design
Lingua lunga ritagliata nel layout minimale di combattimentoDE/ES non testatiPercorso overflow delle lingueDesign + engineering

FAQ

Due Canvas per lobby e combattimento?
Va bene—oppure un Canvas con gruppi. Ciò che conta è visibilità dello stato + raycast, non il numero di Canvas.

Shop a metà schermo—è un modale?
Sì. Specificare se il sottostante è toccabile e se la logica di combattimento va in pausa.

Conflitti con la UX “less is more”?
La tabella di gerarchia è una regola di prodotto, non estetica; P3 può riaprirsi per gli eventi tramite flag della state machine.

Barre overhead in world-space nel 3D?
Sono info di combattimento, gestite con L1; Le regole di sort in world-space si allineano con numeri di danno fluttuanti e Safe Area.

Altre guide che potrebbero interessarti