外观
UI 制作与交互验收
专业方法使用 game-ui-ux,具体布局、交互和焦点 API 使用与锁文件匹配的 bevy-ui。本页规定 N:SIDE 的页面制作与验收方法;页面、配色、尺寸、组件状态与动效起点统一见街区信号规格,不另建一套任务或世界状态
正式游戏入口、Viewer 和 UI 样板分别报告能力。Viewer 可承载真实场景上的 UI 组件验证,实验记录不作为已取得的剧情线索,自由相机不作为角色移动;完整委托、潜梦、存档与正式产品菜单分别按接入结果验收
输入与前提
先取得页面用途、所属玩家动作、信息来源、进入条件、可用输入和退出目的地。调查页面只显示玩家已观察的事实、获得的线索与当前推测;世界真相与剧情谜底按委托的信息顺序出现
从已确认的 Demo 范围选择本轮页面,先制作能实际走通的少量页面和状态。环境关系沿用美术方向,UI 采用街区信号的深色框架、粗标题和亮色焦点;字体、分辨率、缩放档位与控制映射记录在本轮证据,试验参数验证后再收敛
首轮顺序是游戏内主菜单 → 调查工作台 → HUD 与对话 → 潜梦对照。先取得同一构图下的字重、比例与焦点证据,再从实际页面提取共用组件,最后加入纹理和细部动效。复用场景或占位画面时写清身份,不把新的菜单角色演出自动加入 Demo 资产预算
从流程到接入
- 写出进入 → 阅读或选择 → 确认或取消 → 返回的短流程,列出正常、空、加载、不可用、错误状态;不适用的状态注明原因
- 确定每层界面的输入所有者、默认焦点、导航顺序和返回目标;弹窗阻止操作落到后层,关闭后恢复仍有效的原焦点,否则回到明确的可用默认项
- 使用容器、相对布局和实际文字试排,处理长标题、多行对白、列表滚动与宽高比;焦点、选中、悬停、按下和禁用各有清楚表现,必要状态不只靠颜色区分。检查底板与场景叠合后的文字对比,不只检查 token 色值
- 接入真实状态与动作请求:界面读取所属系统提供的信息,确认后由系统执行规则与结果,成功或失败再反馈到界面;使用 Bevy 变更检测或既有消息,不因上游引擎示例新建通用事件总线
- 在输入路由中区分页面导航与游戏动作,验证同一按键不会既关闭菜单又触发场景动作;设备切换更新提示,不清空仍有效的焦点和选择
- 先验证状态和导航,再在真实画面检查文字、遮挡与操作反馈;记录 100% 与放大档、常规与较窄画幅、键鼠与手柄状态,修复后重跑受影响的进入、返回与恢复路线
普通文字、布局、底板与焦点留在引擎组件,图标保留可编辑源,边框与纹理独立导出。字体许可、中文覆盖和资产来源沿用资产管线;颜色、字号和时长从同一 token 来源读取,页面不重复写死。导出效果图是构图证据,运行截图与连续操作证明真实组件行为
输入与画面立即反映有效操作,装饰动画允许打断。Reduced Motion 切换为快速淡入淡出或直接切换,阅读页不持续跳动;声音按同一操作事件触发,静音仍可完成同一路线。打开、关闭、失焦和切场检查残留动效或循环声音是否清理
导航与恢复约定
| 情况 | 必须明确的行为 | 检查方式 |
|---|---|---|
| 打开页面或列表 | 有可见默认焦点;空列表仍有返回入口 | 键鼠和手柄分别从未操作状态进入 |
| 打开子页或确认框 | 上层独占导航,底层暂停接收同类输入 | 持续移动、确认、取消,检查底层状态没有误变 |
| 关闭子页 | 回到仍存在的先前控件;目标已删除时用默认项 | 删除、隐藏或禁用先前目标后返回 |
| 鼠标与手柄切换 | 悬停和焦点可区分,最后有效选择可继续使用 | 在同一页面往返切换并确认 |
| 断连、失焦与恢复 | 无持续误输入,恢复路径可达,提示与实际设备一致 | 真实拔插或失焦;模拟结果单独说明 |
| 暂停、切场、读档 | 显式选择关闭还是重建页面;不保留旧实体引用 | 打开页面后中断并恢复,检查事实与焦点一致 |
| 失败与重复提交 | 明确失败原因及重试方式;一次动作只提交一次 | 快速确认、返回、重入和恢复后的重复操作 |
暂停是否冻结世界、对话能否跳过、关闭时是否保存选择由系统规格决定;页面实现不能自行改变任务规则。设置页面只有实际生效且可恢复的选项才作为可用项交付
输出、命令与失败处理
交付流程与状态表、可编辑源、实际页面及组件、必要独立素材、双输入路线、机器结果和视觉自查。共用规则回写本页或系统规格,本轮分辨率、设备、截图与作者反馈记录归任务证据。Wiki 位图统一为质量 80 的 WebP,完整运行图与视频留在证据输出目录
从仓库根执行以下 fish 命令可检查现有工程;它们不能代替尚未接入的界面运行
fish
cargo fmt --manifest-path game/Cargo.toml --check
cargo test --manifest-path game/Cargo.toml --features viewer --locked
cargo run --manifest-path game/Cargo.toml --locked接入界面沿运行验证扩展真实输入与状态路径,不单独写“看起来像界面”的录制副本。机器检查焦点可达、输入隔离、可用状态和提交次数;画面检查字体、对比、遮挡与反馈,实际操作检查确认、取消与设备切换。实际入口与命令维护在工程说明,避免在多个文档维护不同录制命令
固定场景比较关闭 UI、展开菜单、滚动、设备切换与潜梦效果的帧时间和加载变化,记录分辨率、硬件、构建与采样窗口;CPU 帧间隔、GPU 时间和整体帧率按实际取得指标区分。尚未制作的页面与声音记为 NOT RUN,不从一个工作菜单推断全部页面性能
若任一输入无法返回,先修路由或焦点再评美术;若信息超前,修正其状态来源,不以隐藏颜色掩盖。素材加载失败保留可读的错误与返回路径,不能留下只可用鼠标绕出的空白页面。缺少真实手柄或目标平台时将对应项记为 NOT RUN
来源与适配
基于 game-ui-ux改编,固定 commit 44888f28ff918357ad82c4473352c60a1c5bde5b,Copyright 2026 Abhishek Barali and the awesome-gamedev-agent-skills contributors,Apache-2.0 LICENSE · NOTICE
Modified for N:SIDE:将跨引擎布局、焦点与页面流程方法连接到 Bevy、双输入、调查信息边界和现有验收入口,未采用 Godot/Unity 代码或新增中间件。完整声明与文件对应关系见仓库根 THIRD_PARTY_NOTICES.md 与 third_party/skills/awesome-gamedev-agent-skills/