手游 HUD 信息层级:战斗态、大厅态与弹窗该显示什么
按游戏状态划分 HUD 可见性与优先级;与 Safe Area、飘字层、Modal 排序的对接;可执行的规格表与 Play/真机验收步骤。
- 游戏UI设计
- 游戏开发AI提效
- ui-to-engine
- hud
- mobile
- unity
- godot
- cocos
- vberai
- 2026
HUD 常见问题不是「少做了一个血条」,而是 同一屏叠了太多同级信息:战斗里弹出大厅级入口、过场动画仍显示可点商店、Modal 打开时底层 HUD 还在抢点击。策划稿往往按 单帧 mock 画,不会标「战斗态隐藏货币条」——需要 状态 × 层级 规格,程序才能在 可见性 + 输入拦截 + 绘制排序 里落地。
下文以 Unity UGUI(Prefab、Canvas.sortingOrder、Graphic Raycast)为主表述;Godot 用 CanvasLayer layer + Control mouse_filter,Cocos 用 节点绘制顺序 + BlockInputEvents / 全屏遮罩,判据与表格同构。Safe Area、飘字层、Canvas 排序细节见 Safe Area、飘字;真机 / 多语言 / Release 仍叠加 发布前自查 第 1、2、5 项。
失败判据(任一即未通过): Modal / 过场 / 支付流程中 底层 HUD 仍可交互(除非规格明确「半屏可操作」);战斗态出现 非战斗必需且不可关闭 的促销入口挡操作区;同一信息 两处重复显示(如金币顶栏 + 战斗内又大号金币)且无产品说明;状态切换时 残留上一态控件(可见或占 Raycast);与 多语言 叠加后,长文案语言在 战斗态精简布局 仍爆框。
先定状态,再定控件
| 游戏状态(示例) | HUD 目标 | 典型显示 | 典型隐藏 / 降级 |
|---|---|---|---|
| 大厅 / 主界面 | 导航 + 资源 + 活动 | 顶栏货币、底栏 Tab、活动入口 | 战斗技能栏、准星 |
| 战斗 / 关卡内 | 操作 + 生存信息 | 血条、技能、暂停 | 大厅 Tab、全屏活动 Banner |
| 过场 / CG | 无交互或仅跳过 | 跳过按钮 | 几乎全部 HUD(或仅保留跳过) |
| Modal 弹窗(商店、设置) | 焦点在弹窗 | 弹窗内控件 | 底层 HUD 关 Raycast 或整层隐藏 |
| 支付 / 合规 | 完成流程 | 协议、确认 | 游戏内促销浮层 |
状态枚举由 策划 + 程序 共定(如 GameUIState.Lobby | Combat | Cinematic | Modal),UI 根 订阅状态机(Unity Prefab 分组 / Godot 场景分支 / Cocos 预制体),避免每个按钮在脚本里散落 SetActive / visible。

层级与排序(与引擎无关的约定)
建议 从下到上 写进规格(数字越大越靠前):
| 层级 | 内容 | 交互 |
|---|---|---|
| L0 | 全屏背景 / 场景 UI bleed | 无 |
| L1 | 战斗 HUD(血条、摇杆区占位) | 有 |
| L2 | 战斗飘字 / 提示 | 无 Raycast(见 飘字) |
| L3 | 系统 Toast / 跑马灯 | 通常无 |
| L4 | Modal / 全屏弹窗 | 有;挡 L1–L3 点击 |
| L5 | 网络断线、强制更新 | 有;挡全部 |
Unity:sortingOrder / 多 Canvas 分工;Godot:CanvasLayer layer;Cocos:同 Canvas 下节点顺序或分层 Canvas + 遮罩。Modal 打开时必须抬升 L4,并对 L1 关 Raycast / mouse_filter / BlockInput,不能仅靠「视觉上盖住仍点穿」。

信息优先级(战斗态示例)
战斗态若只能留 N 个可读区块(小屏),建议默认上限:
| 优先级 | 区块 | 可降级策略 |
|---|---|---|
| P0 | 生命 / 失败条件相关 | 不隐藏 |
| P0 | 暂停 / 退出战斗 | 不隐藏 |
| P1 | 技能 / 主要操作 | 可合并为更少按钮 |
| P2 | 任务目标短文本 | 缩为 icon + 长按详情 |
| P3 | 货币、活动入口 | 战斗态默认隐藏 或进暂停菜单 |
| P3 | 聊天入口 | 收起到 icon |
「降级」须在 多语言压力语言 下仍可读(DE/ES 等),不能只缩英文。

验收步骤(5 步)
- 列表化状态 — 从主流程提取状态切换点(进关、开商店、CG、断线重连)。
- 逐态截图对比 — Editor Play 与 真机 Release 各一套(对照 发布前第 1、5 项);检查
SetActive(false)/visible=false的节点是否仍拦截点击。 - Modal 抽测 — 商店 / 设置 / 支付打开时,点底层原 HUD 按钮 必须无效(全屏透明 Raycast 或 BlockInput 遮罩)。

- 与 Safe Area 交叉 — 战斗态 P0 控件均在 safe 内(见 Safe Area)。
- 写回可版本化资源 — 状态表驱动(Unity ScriptableObject / Godot Resource / Cocos 配置表),非 Scene 里临时隐藏。
设计稿要补什么
| 交付 | 用途 |
|---|---|
| 分状态 wireframe(至少 Lobby / Combat / Modal) | 程序配置 visibility |
| 战斗态「可隐藏清单」标注 | 避免 mock 里画满元素 |
| Modal 规格:底层是否半透明、是否可点透 | 定 Raycast 策略 |
| 促销 / 活动层 z 序 | 与 L4/L5 对齐 |
不要求设计师写状态机;表格 + 标注 即可减少程序猜。
回修路径表
| 现象 | 最可能原因 | 建议动作 | 负责 |
|---|---|---|---|
| 弹窗后仍能点战斗按钮 | 未关底层 Raycast | Modal 层关 Graphic Raycast / 遮罩全屏 | 程序 |
| 战斗满屏活动入口 | 未做状态表 | 战斗态隐藏 P3;策划确认 | 程序 + 策划 |
| 过场 HUD 残留 | 未监听 Cinematic 状态 | 状态机统一 Hide HUD | 程序 |
| 两套货币显示 | 大厅条未关 | Combat 态关顶栏或合并数据源 | 程序 + 策划 |
| 长语言战斗态爆框 | 精简布局未测 DE/ES | 见 多语言爆框 | 设计 + 程序 |
常见问题
大厅和战斗用两个 Canvas 吗?
可以;也可同一 Canvas 下分组。关键是 状态 visibility + Raycast,不是 Canvas 数量本身。
半屏商店算 Modal 吗?
算。须写清底层是否可点、是否暂停战斗逻辑。
和 UX「少即是多」冲突?
层级表是 产品规则,不是审美结论;P3 隐藏可由策划在活动期临时打开,但须过状态机开关。
3D 游戏头顶血条算 HUD 吗?
算 战斗信息层,与 L1 并列管理;World Space 排序见 飘字 / Safe Area 相关约定。
继续阅读
你可能还会喜欢这些文章
Unity MCP 安装教程:Package Manager 导入并连接 AI IDE
逐步安装 VberAI Unity MCP Pro:Package Manager「从磁盘添加包」、激活账号、启动本地 MCP Server(默认端口 6589),并在 Cursor、Claude、Codex 等支持 MCP 的 AI IDE 中完成连接验证。
- unity
- mcp
- cursor
- tutorial
Godot MCP vs 手写脚本:什么时候该让 AI 操控编辑器
对照 Godot 场景组织与信号规范,说明 VberAI Godot MCP 适合加速原型与样板,以及何时应坚持手写 GDScript。
- godot-mcp
- vberai
- comparison
- GDScript
VberAI Godot MCP 安装:如何在 Godot 里启用 MCP 插件
VberAI Godot MCP 安装与启用:下载开源 Godot MCP 插件、放入 addons、在项目设置中启用、启动本地服务,并在 Cursor 等 AI IDE 中确认 godot-mcp 已连接。
- godot
- mcp
- cursor
- tutorial