战斗飘字与伤害数字:交接验收与引擎实现要点
飘字糊、缺字、叠层错乱或同屏卡顿时的失败判据;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 脚本重复算法。
继续阅读
你可能还会喜欢这些文章
AI 怎么生成游戏序列帧和宣传片?拆帧进 Unity / Godot / Cocos
VberAI Studio 用文本、图片或首尾帧生成游戏序列帧与宣传/剧情 CG;落画布后可裁切、拆帧,交付 Unity、Godot、Cocos。含操作录像、验收清单,并说明不能替代 Timeline / Sequencer。
- ai-studio
- game-video
- sequence-frames
- sprite-frames
Figma to Godot / Figma 到 Godot UI:AI Studio 导出 Control 层级
Figma to Godot:在 VberAI Studio 保留 Frame 结构,导出 Godot Control 节点层级;含 Figma 与 Godot 兼容说明与编辑器验收步骤。
- figma-to-godot
- figma
- godot
- ai-studio
AI 3D模型生成:VberAI Studio 文生 3D / 图生 3D,GLB 导出与 Unity 引擎
VberAI Studio AI 3D模型生成:文生/图生 3D(图片转3D)、AI三维资产;PBR、GLB/FBX/USDZ、3D动画与百余种动作、3D打印/STL。可免费试用,导出 Unity/Godot/Cocos。
- vberai
- ai-studio
- 3d-model
- text-to-3d