← Kembali ke blog

Angka Damage Melayang: Penerimaan Handoff dan Implementasi Engine

Kriteria gagal saat popup buram, glyph hilang, urutan salah, atau tersendat; memilih TMP vs digit bitmap, pool dan urutan Canvas, langkah penerimaan Unity UGUI, dan cara art digit desain terpasang.

Diterbitkan
  • game-ui-design
  • game-dev-ai
  • ui-to-engine
  • bitmap-font
  • unity
  • godot
  • cocos
  • vberai
  • 2026
Angka Damage Melayang: Penerimaan Handoff dan Implementasi Engine

Saat sepuluh serangan mendarat dalam satu detik, masalah teks melayang jarang diperbaiki dengan “font lebih besar”: tajam di Editor, lembut di perangkat; warna crit berfungsi tetapi “K” atau minus hilang; angka menempel pada tombol HUD dan mencuri ketukan; atau Instantiate memicu lonjakan GC. Popup adalah UI frekuensi tinggi berumur pendek—terima mereka secara terpisah dari HUD statis.

Di bawah ini berfokus pada Unity UGUI / TextMeshPro (RectTransform, Canvas, sortingOrder). Godot: Label + Theme / bitmap; Cocos: Label + bitmap font + pool—kriteria dan urutan langkah yang sama. Shell HUD statis: checklist engine + MCP. Item pra-rilis 3 (“art buram / angka damage”)—uji ulang pada perangkat Release.

Kriteria gagal (salah satu = tidak lulus): keterbacaan terganggu (buram, terpotong, glyph hilang); waktu frame pertempuran jelas lebih buruk daripada baseline tanpa popup pada perangkat target; popup memblokir ketukan yang diperlukan dengan raycast masih aktif; visual crit/heal/miss tidak sesuai spesifikasi berbasis data; format angka tidak konsisten dengan tabel desain (misalnya 1.2K vs 1200 tercampur).

Sharp in Editor vs soft on device


Pilih dulu: TMP atau digit bitmap

SkenarioLebih cocokJebakan umum
Digit + sedikit simbol (0-9 . + - %)Bitmap / mesh digit kustomCelah charset; filter salah → buram
String terlokalisasi penuh (“Critical”, “Immune”)TMP + string tableLebar bergetar saat dicampur dengan digit
Outline berat, gradien, gaya beranimasiBitmap atau urutan frameState hilang → fallback warna salah
PrototipeTMP SDF defaultTanpa resolusi referensi → lembut di perangkat

Jika buram di perangkat tetap terjadi: Canvas Scaler reference, TMP padding/atlas, bitmap Filter Mode (sering Point)—lalu charset atau kualitas SDF. Lihat perencanaan charset bitmap font dan item pra-rilis 3.

Bitmap digit atlas vs TMP/SDF text


Unity: bangun dan terima (6 langkah)

1. Canvas khusus atau sort eksplisit

  • Gunakan Canvas khusus (Screen Space - Camera selaras dengan kamera pertempuran) atau layer anak HUD.
  • Setel sortingOrder di atas UI dunia, di bawah popup modal; raycastTarget = false pada grafik popup.
  • Popup dunia: satu World Canvas bersama—bukan satu Canvas per angka.

Popup Canvas sort above HUD, below modals, raycasts off

2. Object pool

  • Prewarm ≥ jumlah puncak di layar (stres dari skill; sering 16–32 minimum).
  • Saat didaur ulang: reset posisi, alpha, skala, state animasi, teks.
  • Tidak ada Instantiate/Destroy per serangan.

3. Pisahkan data dari presentasi

  • Pertempuran memancarkan DamagePopupEvent (nilai, tipe, posisi dunia/titik tempel, flag crit).
  • Presentasi memilih warna, awalan, singkatan (K/M/B), kurva.
  • Tabel desain memetakan tipe → Prefab gaya (Normal / Crit / Heal / Miss / Block).

4. Gerakan dan keterbacaan

  • Umum: melayang naik + memudar + skala sedikit; 0,4–0,8 detik; stagger atau antre pada anchor yang sama.
  • Multi-serangan dalam frame yang sama: gabungkan atau offset 1–2 frame untuk menghindari tumpang tindih.
  • Jika ukuran mengikuti jarak kamera, gunakan satu aturan skala dunia—jangan campur dengan skala UI Canvas dua kali.

Multiple popup states with horizontal stagger

5. Charset dan pemformatan

  • Bitmap: verifikasi 0-9 . , + - % x K M B dan aturan singkatan proyek.
  • TMP: pisahkan field atau sprite—jangan mengandalkan satu string untuk mengganti font.
  • Dengan overflow locale: jangan rasterisasi kalimat terlokalisasi penuh sebagai art popup.

6. Smoke perangkat

  • Dev dan Release: 30 detik gerombolan mob, skill bos multi-tick, perangkat RAM rendah.
  • Bandingkan waktu frame dengan vs tanpa popup; tangkapan layar crit/heal/miss masing-masing sekali.
  • Kriteria lulus ada di Prefab + konfigurasi pool, bukan hanya Scene uji.

Handoff desain (digit dan state)

PengirimanPenggunaan
Art digit atau gaya TMP per state (Normal/Crit/Heal/Miss)Prefab/Material berbasis tabel
Outline/shadow pada resolusi targetCek ketajaman perangkat
Warna + ikon crit/combo pada digitHindari tint hard-coded di kode
Cakupan charset (hanya digit vs unit terlokalisasi)Bitmap atau string table

Checklist handoff desain: jika popup raster, spesifikasikan per-locale atau tidak; default digit bitmap + label TMP.


Routing perbaikan

GejalaKemungkinan penyebabTindakanPemilik
Lembut di perangkat, tajam di EditorScaler / SDF / filter bitmapSelaraskan resolusi referensi; filter Point; padding SDFEngineering
Glyph hilangCharset / simbolPerluas charset; atau TMPEngineering + Design
Memblokir tombolSort / raycastTurunkan order atau nonaktifkan raycastEngineering
TersendatTanpa pool / terlalu banyak FX+teksPool; gabungkan pop frame yang samaEngineering
Tampilan crit salahWarna hard-codedTipe→Prefab; state desainEngineering + Design
Terpisah dari gaya HUDDua pipeline fontSatukan sumber font atau ThemeDesign + Engineering

Pertanyaan umum

Haruskah popup berupa World Space?
Tidak. 2D tetap sering menggunakan Screen Space - Camera; kamera 3D bebas sering menggunakan World Canvas. Pilih satu dan dokumentasikan.

Partikel UI untuk hiasan?
Boleh untuk FX; digit tetap Label/TMP/mesh untuk locale dan pooling.

Satu skrip dengan logika damage?
Pancarkan event dari logika; toggle presentasi (ShowDamageNumbers) untuk pengujian dan aksesibilitas.

Angka besar?
Satu aturan formatter dari desain; implementasi tunggal—tanpa salin-tempel di seluruh skrip UI.

Panduan lain yang mungkin Anda suka