Numeri di danno fluttuanti: accettazione del handoff e implementazione nel motore
Criteri di fallimento quando i popup sono sfocati, mancano glifi, ordinano male o scattano; scelta tra TMP e cifre bitmap, pool e ordine Canvas, passi di accettazione Unity UGUI e come si integra l'arte delle cifre.
- game-ui-design
- game-dev-ai
- ui-to-engine
- bitmap-font
- unity
- godot
- cocos
- vberai
- 2026
Quando dieci colpi arrivano in un secondo, i problemi del testo fluttuante raramente si risolvono con un “font più grande”: nitido nell’Editor, sfocato sul dispositivo; il colore critico funziona ma manca la “K” o il meno; i numeri stanno sopra i pulsanti dell’HUD e rubano i tap; oppure Instantiate genera picchi di GC. I popup sono UI ad alta frequenza e breve durata—accettali separatamente dall’HUD statico.
Quanto segue si concentra su Unity UGUI / TextMeshPro (RectTransform, Canvas, sortingOrder). Godot: Label + Theme / bitmap; Cocos: Label + bitmap font + pool—stessi criteri e stesso ordine di passi. Guscio HUD statico: checklist motore + MCP. Voce 3 pre-lancio (“arte sfocata / numeri di danno”)—ritesta su dispositivi Release.
Criteri di fallimento (uno qualsiasi = non superato): leggibilità compromessa (sfocatura, clipping, glifi mancanti); tempo frame in combattimento chiaramente peggiore rispetto alla baseline senza popup sui dispositivi target; i popup bloccano i tap richiesti con i raycast ancora attivi; i visual di critico/cura/mancato non corrispondono alla specifica data-driven; formattazione dei numeri incoerente con la tabella di design (es. 1.2K vs 1200 mescolati).
Scegli prima: TMP o cifre bitmap
| Scenario | Più adatto | Trappola tipica |
|---|---|---|
Cifre + pochi simboli (0-9 . + - %) | Bitmap / mesh di cifre personalizzata | Lacune nel charset; filtro sbagliato → sfocatura |
| Stringhe localizzate complete (“Critical”, “Immune”) | TMP + string table | Jitter di larghezza quando mescolate con cifre |
| Contorno pesante, gradiente, stile animato | Bitmap o sequenza di frame | Stato mancante → fallback colore sbagliato |
| Prototipo | TMP SDF predefinito | Nessuna risoluzione di riferimento → sfocato sul dispositivo |
Se la sfocatura sul dispositivo persiste: Canvas Scaler reference, TMP padding/atlas, bitmap Filter Mode (spesso Point)—poi charset o qualità SDF. Vedi pianificazione charset bitmap font e voce 3 pre-lancio.


Unity: costruzione e accettazione (6 passi)
1. Canvas dedicato o sort esplicito
- Usa un Canvas dedicato (
Screen Space - Cameraallineato con la camera di combattimento) o un layer figlio dell’HUD. - Imposta
sortingOrdersopra la UI del mondo, sotto i popup modali;raycastTarget = falsesulla grafica dei popup. - Popup nel mondo: un unico World Canvas condiviso—non un Canvas per numero.

2. Object pool
- Pre-riscalda ≥ il conteggio massimo a schermo (stress da abilità; spesso 16–32 minimo).
- Al riciclo: resetta posizione, alpha, scala, stato animazione, testo.
- Nessun
Instantiate/Destroyper colpo.
3. Separa dati da presentazione
- Il combattimento emette
DamagePopupEvent(valore, tipo, posizione nel mondo/punto di aggancio, flag critico). - La presentazione sceglie colore, prefisso, abbreviazione (K/M/B), curve.
- La tabella di design mappa tipo → Prefab di stile (Normal / Crit / Heal / Miss / Block).
4. Movimento e leggibilità
- Tipico: float up + fade + leggera scala; 0.4–0.8s; stagger o coda sullo stesso ancoraggio.
- Multi-colpo nello stesso frame: unisci o offset di 1–2 frame per evitare sovrapposizioni.
- Se la dimensione segue la distanza della camera, usa una sola regola di scala nel mondo—non mescolare due volte con la scala del Canvas UI.

5. Charset e formattazione
- Bitmap: verifica
0-9 . , + - % x K M Be le regole di abbreviazione del progetto. - TMP: dividi campi o sprite—non affidarti a un’unica stringa per cambiare font.
- Con overflow di localizzazione: non rasterizzare intere frasi localizzate come arte dei popup.
6. Smoke test sul dispositivo
- Dev e Release: 30s di sciame di mob, abilità boss multi-tick, dispositivo con poca RAM.
- Confronta il tempo frame con e senza popup; screenshot di critico/cura/mancato una volta ciascuno.
- I criteri di superamento vivono nel Prefab + configurazione pool, non solo nella Scene di test.
Handoff di design (cifre e stati)
| Consegna | Uso |
|---|---|
| Arte delle cifre o stili TMP per stato (Normal/Crit/Heal/Miss) | Prefab/Material guidato da tabella |
| Contorno/ombra alla risoluzione target | Verifica nitidezza sul dispositivo |
| Colore + icona di critico/combo sulle cifre | Evita tinte hard-coded nel codice |
| Ambito charset (solo cifre vs unità localizzate) | Bitmap o string table |
Checklist handoff di design: se i popup sono raster, specifica per-locale o no; predefinito cifre bitmap + etichette TMP.
Instradamento delle correzioni
| Sintomo | Causa probabile | Azione | Responsabile |
|---|---|---|---|
| Sfocato sul dispositivo, nitido nell’Editor | Scaler / SDF / filtro bitmap | Allinea risoluzione di riferimento; filtro Point; padding SDF | Engineering |
| Glifi mancanti | Charset / simboli | Estendi charset; o TMP | Engineering + Design |
| Blocca i pulsanti | Sort / raycast | Abbassa l’ordine o disabilita raycast | Engineering |
| Scatti | Nessun pool / troppi FX+testo | Pool; unisci popup nello stesso frame | Engineering |
| Aspetto critico sbagliato | Colori hard-coded | Tipo→Prefab; stati di design | Engineering + Design |
| Diviso dallo stile HUD | Due pipeline di font | Unifica la sorgente font o il Theme | Design + Engineering |
Domande frequenti
I popup devono essere World Space?
No. La 2D fissa spesso usa Screen Space - Camera; le camere 3D libere spesso usano World Canvas. Scegline uno e documentalo.
Particelle UI per l’effetto?
Va bene per gli FX; le cifre restano Label/TMP/mesh per localizzazione e pooling.
Un unico script con la logica del danno?
Emetti eventi dalla logica; toggle di presentazione (ShowDamageNumbers) per test e accessibilità.
Numeri grandi?
Una regola di formattazione dal design; implementazione unica—niente copia-incolla tra script UI.
Continua a leggere
Altre guide che potrebbero interessarti
Nine-Slice e pannelli scalabili per la UI di gioco: marcature Figma / PSD e QA dello slicing nei motori
Quando pannelli e campi richiedono il 9-slice: come marcare i bordi ed esportare la scala nel design, e come superare o fallire Sliced di Unity UGUI, StyleBox di Godot e i cap di Cocos, con percorsi di correzione. Estende il punto 6 della checklist di handoff.
- game-ui-design
- game-dev-ai
- ui-slicing
- figma-to-unity
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.
- game-ui-design
- game-dev-ai
- ui-to-engine
- hud
Overflow delle localizzazioni nella UI di gioco: headroom di design e QA dell'export di traduzione di VberAI Studio
Come gestire testi tedeschi o spagnoli che rompono pulsanti e liste, riservare larghezza nel design e confrontare le lingue su VberAI Studio prima del re-export.
- game-ui-design
- game-dev-ai
- ui-localization
- i18n