戰鬥飄字與傷害數字:交接驗收與引擎實作要點
飄字糊、缺字、疊層錯亂或同屏卡頓時的失敗判據;TMP 與位圖字選型、物件池與 Canvas 排序、Unity UGUI 驗收步驟,以及設計稿數字字圖如何對接。
- 遊戲UI設計
- 遊戲開發AI提效
- ui-to-engine
- bitmap-font
- unity
- godot
- cocos
- vberai
- 2026
同屏十幾次受擊時,飄字問題通常不是「再調大字號」:Editor 裡清晰、真機發糊;暴擊換色但 缺「萬」「K」或負號;飄字疊在 HUD 按鈕上 擋點擊;或 Instantiate 太猛 GC 卡頓。飄字屬於高頻、短生命週期 UI,要和靜態 HUD 分開驗收。
下文以 Unity UGUI / TextMeshPro 為主(RectTransform、Canvas、sortingOrder);Godot 用 Label + Theme / 位圖字,Cocos 用 Label + 位圖字型 / 物件池,判據與步驟同構。靜態 HUD 殼層仍按 進引擎 MCP 清單 驗收;發布前自查 第 3 項「藝術字 / 傷害數字糊」在真機 Release 包再測一遍。
失敗判據(任一即未通過): 主流程可讀性受損(糊、裁切、缺 glyph);同屏常規戰鬥幀率明顯低於無飄字 baseline(需記錄機型);飄字擋住必填互動且無 raycastTarget 關閉;暴擊/治療/免疫等狀態 視覺規範與表驅動不一致;大數或縮寫規則與策劃表不一致(如 1.2K 與 1200 混用)。
先選型:TMP 還是位圖字
| 場景 | 更合適 | 常見坑 |
|---|---|---|
僅數字 + 少量符號(0-9 . + - %) | 位圖字 / 自訂 mesh 數字 | 字集漏字元;圖集 filter 錯導致糊 |
| 需多語言整句(「暴擊」「免疫」) | TMP + 字串表 | 與數字混排時寬度抖動;Auto Size 壓過頭 |
| 強風格描邊、漸層、逐幀動畫字 | 位圖字或序列幀 | 每套狀態一張圖,缺狀態就臨時用錯色 |
| 快速原型 | TMP 預設 SDF | 未設 Reference Resolution 時,真機 scale 發糊 |
真機發糊時先查:Canvas Scaler 基準解析度、TMP Padding / Atlas、位圖 Filter Mode(多為 Point);仍糊再換字集或提高 SDF 取樣,見 位圖字型生成與字集規劃 與 發布前第 3 項。


Unity:推薦實作與驗收(6 步)
1. 單獨 Canvas 或明確排序
- 飄字用 獨立 Canvas(
Screen Space - Camera與戰鬥相機一致)或 HUD 子節點下專用層。 - 設定
sortingOrder高於場景、低於模態彈窗;關閉 Graphic 的raycastTarget(飄字不應吃點擊)。 - 世界空間飄字:統一 同一 World Canvas,勿每個數字一個 Canvas。

2. 物件池
- 預熱池大小 ≥ 同屏峰值(按技能配置壓測,常見 16~32 起)。
- 回收時重置:位置、alpha、scale、動畫狀態、文字內容。
- 禁止每幀
new/Destroy飄字節點。
3. 資料與表現分離
- 戰鬥邏輯只拋
DamagePopupEvent(數值、類型、世界座標/掛點、是否暴擊)。 - 表現層負責:配色、前綴、縮寫(K/M/B/萬)、動畫曲線。
- 策劃表驅動 類型 → 樣式 Prefab(Normal / Crit / Heal / Miss / Block)。
4. 動畫與可讀性
- 典型:上飄 + 淡出 + 輕微 scale;時長 0.4~0.8s,同位置連擊可 橫向錯開或佇列。
- 同幀多段傷害:合併顯示或 幀間錯開 1~2 幀,避免完全重疊。
- 字號隨相機距離變化時,用 統一 World Scale 規則,勿與 UI Canvas 混算兩套 scale。

5. 字集與格式
- 位圖字提交前核對字元表:
0-9 . , + - % x K M B 萬 億與專案 縮寫規則 一致。 - TMP 用
<sprite>或分欄位:數字與「暴擊」文案分 Label,避免單一字串換字型。 - 與 多語言爆框 交叉:整句本地化文字不要 raster 成一張飄字圖。
6. 真機 smoke
- Dev / Release 各測:密集小怪戰 30s、單次多段 BOSS 技能、低記憶體機型。
- 對比 無飄字 / 有飄字 幀時間;截圖存檔暴擊/治療/免疫各一。
- 通過標準寫入 Prefab + 池配置,不是 Scene 臨時物件。
設計稿交接(數字與狀態)
| 交付 | 用途 |
|---|---|
| 各狀態 數字字圖或 TMP 樣式規範(Normal/Crit/Heal/Miss) | 表驅動換 Prefab 或 Material |
| 描邊/投影 在目標解析度下的 1:1 範例 | 真機對比是否糊 |
| 連擊/暴擊 配色與圖示 是否疊加在數字上 | 避免程式臨時 Color.red 代替 |
| 字集範圍說明(僅數字 vs 含中文單位) | 生成位圖字或字串表 |
交稿自查 中藝術字項:飄字若走 raster,須在規格寫明 是否隨語言替換;預設建議 數字位圖 + 文案 TMP。
回修路徑表
| 現象 | 最可能原因 | 建議動作 | 負責 |
|---|---|---|---|
| 真機糊、Editor 清晰 | Scaler / SDF scale / 位圖 filter | 對齊基準解析度;Point filter;加 SDF padding | 程式 |
| 缺字、方塊 | 字集未含符號或單位 | 補 charset 重導;或改 TMP | 程式 + 設計 |
| 擋按鈕 | 排序過高或未關 raycast | 調 sortingOrder;raycastTarget=false | 程式 |
| 同屏卡頓 | 未池化或粒子+文字過量 | 上池;合併同幀跳字 | 程式 |
| 暴擊樣式不對 | 硬編碼色,未走表 | 類型→樣式 Prefab;設計補狀態稿 | 程式 + 策劃 |
| 與 HUD 靜態字風格分裂 | 飄字與 HUD 各做一套 | 統一字型源或 Theme | 設計 + 程式 |
常見問題
飄字必須 World Space 嗎?
不是。2D/固定視角常用 Screen Space - Camera 跟戰鬥相機;3D 自由視角常用 World Canvas。團隊選一種並寫進規範。
可以用 UI Particle 嗎?
可以作裝飾,數字本身仍建議 Label/TMP/位圖 mesh,避免粒子文字難本地化、難池化。
和傷害邏輯寫在一個腳本行嗎?
表現應可關(ShowDamageNumbers),邏輯層只發事件,方便測試與無障礙開關。
大數怎麼顯示?
策劃定 唯一規則(如 4 位起縮寫、保留幾位小數),程式只實作 formatter,勿在多個 UI 腳本重複演算法。
繼續閱讀
你可能還會喜歡這些文章
Cocos Creator MCP 設定教學:連接 Cursor / Claude
搭配 YouTube 實操錄影:安裝 Cocos Creator MCP 外掛、啟動本機橋接,並在 Cursor 或 Claude 中完成 Model Context Protocol 設定與連線驗證。
- cocos
- cocos-creator
- mcp
- cursor
用 Unity MCP 將 AI Studio 匯出的 HUD 綁到血量事件
AI Studio 匯出 Unity HUD 預製體後,用 Cursor + Unity MCP 掛上血量事件、更新血條與傷害數字,並提供可在 Play 模式驗收的步驟與常見斷點排查。
- Unity MCP
- AI Studio
- HUD
- Unity
用 Unity MCP 做 3D RPG:第三人稱、戰鬥與任務怎麼落地
以可演示的 3D RPG 原型為目標:在 Cursor 等 AI IDE 中透過 Unity MCP 推進角色控制、即時戰鬥、敵人狀態機與任務接線;成品 UI 需要時再處理介面匯出。
- Unity MCP
- 3D RPG
- Unity
- combat