← Retour au blog

Nombres de dégâts flottants : acceptation de la passation et implémentation moteur

Critères d'échec : popups flous, glyphes manquants, tri erroné ou saccades ; TMP vs chiffres bitmap, pools et ordre Canvas, étapes d'acceptation Unity UGUI.

Publié le
  • game-ui-design
  • game-dev-ai
  • ui-to-engine
  • bitmap-font
  • unity
  • godot
  • cocos
  • vberai
  • 2026
Nombres de dégâts flottants : acceptation de la passation et implémentation moteur

Quand dix coups touchent en une seconde, les problèmes de texte flottant sont rarement résolus par « une police plus grande » : net dans l’Editor, flou sur l’appareil ; la couleur de critique fonctionne mais « K » ou le signe moins manque ; les nombres se posent sur les boutons du HUD et volent les taps ; ou Instantiate provoque des pics de GC. Les popups sont une UI à haute fréquence et courte durée de vie—acceptez-les séparément du HUD statique.

Ce qui suit se concentre sur Unity UGUI / TextMeshPro (RectTransform, Canvas, sortingOrder). Godot : Label + Theme / bitmap ; Cocos : Label + police bitmap + pool—mêmes critères et même ordre d’étapes. Coquille HUD statique : checklist moteur + MCP. Point 3 avant livraison (« art flou / nombres de dégâts »)—retestez sur appareils Release.

Critères d’échec (un seul suffit = non validé) : lisibilité dégradée (flou, rognage, glyphes manquants) ; temps de frame en combat nettement pire que la baseline sans popup sur les appareils cibles ; les popups bloquent des taps requis avec les raycasts toujours actifs ; les visuels crit/soin/raté ne correspondent pas à la spec pilotée par les données ; formatage des nombres incohérent avec la table de design (ex. 1.2K vs 1200 mélangés).

Sharp in Editor vs soft on device


Choisir d’abord : TMP ou chiffres bitmap

ScénarioMeilleur choixPiège typique
Chiffres + quelques symboles (0-9 . + - %)Bitmap / mesh de chiffres personnaliséLacunes de charset ; mauvais filtre → flou
Chaînes localisées complètes (« Critique », « Immunisé »)TMP + table de chaînesGigue de largeur en mélange avec des chiffres
Contour épais, dégradé, style animéBitmap ou séquence d’imagesÉtat manquant → repli de couleur erroné
PrototypeTMP SDF par défautPas de résolution de référence → flou sur l’appareil

Si le flou persiste sur l’appareil : Canvas Scaler reference, padding/atlas TMP, Filter Mode bitmap (souvent Point)—ensuite charset ou qualité SDF. Voir planification du charset de police bitmap et point 3 avant livraison.

Bitmap digit atlas vs TMP/SDF text


Unity : construire et accepter (6 étapes)

1. Canvas dédié ou tri explicite

  • Utilisez un Canvas dédié (Screen Space - Camera aligné sur la caméra de combat) ou une couche enfant du HUD.
  • Réglez sortingOrder au-dessus de l’UI monde, en dessous des popups modaux ; raycastTarget = false sur les graphiques de popup.
  • Popups monde : un World Canvas partagé—pas un Canvas par nombre.

Popup Canvas sort above HUD, below modals, raycasts off

2. Pool d’objets

  • Préchargez ≥ le pic d’affichage à l’écran (stress des compétences ; souvent 16–32 minimum).
  • Au recyclage : réinitialisez position, alpha, échelle, état d’animation, texte.
  • Pas d’Instantiate/Destroy par coup.

3. Séparer les données de la présentation

  • Le combat émet DamagePopupEvent (valeur, type, position monde/point d’ancrage, flag crit).
  • La présentation choisit couleur, préfixe, abréviation (K/M/B), courbes.
  • La table de design mappe type → Prefab de style (Normal / Crit / Soin / Raté / Blocage).

4. Mouvement et lisibilité

  • Typique : montée + fondu + léger scale ; 0,4–0,8 s ; décalage ou file d’attente sur le même ancrage.
  • Multi-coups sur la même frame : fusionnez ou décalez de 1–2 frames pour éviter le chevauchement.
  • Si la taille suit la distance caméra, utilisez une seule règle d’échelle monde—ne mélangez pas deux fois avec l’échelle du Canvas UI.

Multiple popup states with horizontal stagger

5. Charset et formatage

  • Bitmap : vérifiez 0-9 . , + - % x K M B et projetez les règles d’abréviation.
  • TMP : champs ou sprites séparés—ne comptez pas sur une seule chaîne pour changer de police.
  • Avec débordement de locale : ne rasterisez pas des phrases localisées entières comme art de popup.

6. Smoke test appareil

  • Dev et Release : 30 s de nuée de mobs, compétence de boss multi-ticks, appareil à faible RAM.
  • Comparez le temps de frame avec vs sans popups ; capturez crit/soin/raté chacun une fois.
  • Les critères de réussite vivent dans le Prefab + config de pool, pas seulement dans la Scene de test.

Passation design (chiffres et états)

LivrableUsage
Art de chiffres ou styles TMP par état (Normal/Crit/Soin/Raté)Prefab/Material piloté par table
Contour/ombre à la résolution cibleVérification de netteté sur appareil
Couleur + icône crit/combo sur les chiffresÉviter les teintes codées en dur dans le code
Portée du charset (chiffres seuls vs unités localisées)Bitmap ou table de chaînes

Checklist de passation design : si les popups sont raster, spécifiez par locale ou non ; par défaut chiffres bitmap + labels TMP.


Routage des corrections

SymptômeCause probableActionResponsable
Flou sur appareil, net dans l’EditorScaler / SDF / filtre bitmapAligner la résolution de référence ; filtre Point ; padding SDFIngénierie
Glyphes manquantsCharset / symbolesÉtendre le charset ; ou TMPIngénierie + Design
Bloque les boutonsTri / raycastBaisser l’ordre ou désactiver le raycastIngénierie
SaccadesPas de pool / trop de FX+textePool ; fusionner les pops de même frameIngénierie
Apparence crit erronéeCouleurs codées en durType→Prefab ; états de designIngénierie + Design
Écart de style avec le HUDDeux pipelines de policeUnifier la source de police ou le ThemeDesign + Ingénierie

Questions fréquentes

Les popups doivent-ils être en World Space ?
Non. La 2D fixe utilise souvent Screen Space - Camera ; les caméras 3D libres utilisent souvent un World Canvas. Choisissez-en un et documentez-le.

Des particules UI pour le style ?
Très bien pour les FX ; les chiffres restent Label/TMP/mesh pour la locale et le pooling.

Un seul script avec la logique de dégâts ?
Émettez des événements depuis la logique ; bascule de présentation (ShowDamageNumbers) pour les tests et l’accessibilité.

Grands nombres ?
Une règle de formateur issue du design ; une seule implémentation—pas de copier-coller entre scripts UI.

D’autres guides qui pourraient vous intéresser