← Zurück zum Blog

Schwebende Schadenszahlen: Übergabe-Abnahme und Engine-Implementierung

Fehlerkriterien bei verschwommenen Popups, fehlenden Glyphen, falscher Sortierung oder Ruckeln; TMP vs. Bitmap-Ziffern, Pools und Canvas-Reihenfolge, Unity-UGUI-Abnahmeschritte und Design-Ziffern-Art.

Veröffentlicht
  • game-ui-design
  • game-dev-ai
  • ui-to-engine
  • bitmap-font
  • unity
  • godot
  • cocos
  • vberai
  • 2026
Schwebende Schadenszahlen: Übergabe-Abnahme und Engine-Implementierung

Wenn zehn Treffer in einer Sekunde landen, lassen sich Probleme mit schwebendem Text selten durch „größere Schrift” beheben: scharf im Editor, weich auf dem Gerät; Krit-Farbe funktioniert, aber „K” oder Minus fehlt; Zahlen liegen auf HUD-Buttons und stehlen Taps; oder Instantiate verursacht GC-Spitzen. Popups sind hochfrequente, kurzlebige UI – nimm sie getrennt vom statischen HUD ab.

Im Folgenden liegt der Fokus auf Unity UGUI / TextMeshPro (RectTransform, Canvas, sortingOrder). Godot: Label + Theme / Bitmap; Cocos: Label + Bitmap-Font + Pool – gleiche Kriterien und Schrittfolge. Statische HUD-Hülle: Engine- + MCP-Checkliste. Vor-Auslieferungs-Punkt 3 („unscharfe Art / Schadenszahlen”) – erneut auf Release-Geräten testen.

Fehlerkriterien (eines davon = nicht bestanden): Lesbarkeit beeinträchtigt (Unschärfe, Clipping, fehlende Glyphen); Kampf-Frame-Zeit deutlich schlechter als die No-Popup-Baseline auf Zielgeräten; Popups blockieren erforderliche Taps, während Raycasts noch aktiv sind; Krit/Heilung/Verfehlt Optik stimmt nicht mit datengetriebener Spezifikation überein; Zahlenformatierung inkonsistent mit der Design-Tabelle (z. B. 1.2K vs. 1200 gemischt).


Zuerst wählen: TMP oder Bitmap-Ziffern

SzenarioBesser geeignetTypische Fallgrube
Ziffern + wenige Symbole (0-9 . + - %)Bitmap / eigenes Ziffern-MeshLücken im Zeichensatz; falscher Filter → Unschärfe
Vollständig lokalisierte Strings („Critical”, „Immune”)TMP + String-TabelleBreiten-Zittern bei Mischung mit Ziffern
Starke Outline, Verlauf, animierter StilBitmap oder Frame-SequenzFehlender Zustand → falscher Farb-Fallback
PrototypStandard-TMP-SDFKeine Referenzauflösung → weich auf dem Gerät

Wenn Geräte-Unschärfe bleibt: Canvas Scaler-Referenz, TMP Padding/Atlas, Bitmap Filter Mode (oft Point) – dann Zeichensatz oder SDF-Qualität. Siehe Bitmap-Font-Zeichensatz-Planung und Vor-Auslieferungs-Punkt 3.

Sharp in Editor vs soft on device

Bitmap digit atlas vs TMP/SDF text


Unity: Aufbau und Abnahme (6 Schritte)

1. Dedizierter Canvas oder explizite Sortierung

  • Nutze einen dedizierten Canvas (Screen Space - Camera, ausgerichtet an der Kampf-Kamera) oder eine HUD-Kind-Ebene.
  • Setze sortingOrder über World-UI, unter modalen Popups; raycastTarget = false auf Popup-Grafiken.
  • World-Popups: ein gemeinsamer World-Canvas – nicht ein Canvas pro Zahl.

Popup Canvas sort above HUD, below modals, raycasts off

2. Objekt-Pool

  • Vorwärmen ≥ Spitzenanzahl auf dem Bildschirm (Stress durch Skills; oft 16–32 Minimum).
  • Beim Recyceln: Position, Alpha, Skalierung, Animationszustand, Text zurücksetzen.
  • Kein Instantiate/Destroy pro Treffer.

3. Daten von Präsentation trennen

  • Kampf sendet DamagePopupEvent (Wert, Typ, Weltposition/Ankerpunkt, Krit-Flag).
  • Präsentation wählt Farbe, Präfix, Abkürzung (K/M/B), Kurven.
  • Design-Tabelle mappt Typ → Stil-Prefab (Normal / Krit / Heilung / Verfehlt / Block).

4. Bewegung und Lesbarkeit

  • Typisch: nach oben schweben + ausblenden + leichte Skalierung; 0,4–0,8 s; Staffelung oder Queue am selben Anker.
  • Mehrfachtreffer im selben Frame: zusammenführen oder um 1–2 Frames versetzen, um Überlappung zu vermeiden.
  • Wenn Größe der Kamera-Distanz folgt, nutze eine World-Scale-Regel – nicht zweimal mit UI-Canvas-Skalierung mischen.

Multiple popup states with horizontal stagger

5. Zeichensatz und Formatierung

  • Bitmap: 0-9 . , + - % x K M B und Projekt-Abkürzungsregeln prüfen.
  • TMP: Felder oder Sprites aufteilen – nicht auf einen String verlassen, um Schriften zu wechseln.
  • Bei Locale-Überlauf: keine vollständig lokalisierten Sätze als Popup-Art rastern.

6. Geräte-Smoke

  • Dev und Release: 30 s Mob-Schwarm, Multi-Tick-Boss-Skill, Gerät mit wenig RAM.
  • Frame-Zeit mit vs. ohne Popups vergleichen; Krit/Heilung/Verfehlt je einmal screenshotten.
  • Abnahmekriterien leben in Prefab + Pool-Konfiguration, nicht nur in der Test-Szene.

Design-Übergabe (Ziffern und Zustände)

LieferungVerwendung
Ziffern-Art oder TMP-Stile pro Zustand (Normal/Krit/Heilung/Verfehlt)Tabellengetriebenes Prefab/Material
Outline/Schatten in ZielauflösungGeräte-Schärfe-Check
Krit/Combo Farbe + Icon auf ZiffernHartkodierte Tints im Code vermeiden
Zeichensatz-Umfang (nur Ziffern vs. lokalisierte Einheiten)Bitmap oder String-Tabelle

Design-Übergabe-Checkliste: Wenn Popups gerastert sind, pro Locale oder nicht spezifizieren; Standard Bitmap-Ziffern + TMP-Labels.


Fehler-Routing

SymptomWahrscheinliche UrsacheAktionVerantwortlich
Weich auf dem Gerät, scharf im EditorScaler / SDF / Bitmap-FilterReferenzauflösung angleichen; Point-Filter; SDF-PaddingEngineering
Fehlende GlyphenZeichensatz / SymboleZeichensatz erweitern; oder TMPEngineering + Design
Blockiert ButtonsSortierung / RaycastReihenfolge senken oder Raycast deaktivierenEngineering
RuckelnKein Pool / zu viele FX+TextPool; Same-Frame-Pops zusammenführenEngineering
Falsche Krit-OptikHartkodierte FarbenTyp→Prefab; Design-ZuständeEngineering + Design
Abweichung vom HUD-StilZwei Font-PipelinesFont-Quelle oder Theme vereinheitlichenDesign + Engineering

Häufig gestellte Fragen

Müssen Popups World Space sein?
Nein. Festes 2D nutzt oft Screen Space - Camera; freie 3D-Kameras nutzen oft World-Canvas. Wähle eines und dokumentiere es.

UI-Partikel für Flair?
Für FX in Ordnung; Ziffern bleiben Label/TMP/Mesh für Locale und Pooling.

Ein Skript mit Schadenslogik?
Events aus der Logik senden; Präsentations-Toggle (ShowDamageNumbers) für Tests und Barrierefreiheit.

Große Zahlen?
Eine Formatter-Regel aus dem Design; eine einzige Implementierung – kein Copy-Paste über UI-Skripte hinweg.

Weitere Guides, die Sie interessieren könnten