Phaser 4 游戏 UI 布局
效果图 V2 拆解与布局遵守功能语义分组约束:先人工确认功能归属与理由,再生成停靠方案;禁止按文字类型或几何最小包含关系自动归父级。
全局控制接入
控制面边界:可提议、可审查、可在当前用户任务的 Work Item 范围内修改,且必须回到 $phaser4-game-workflow-control 审计和状态迁移;仅涉及外部写入、付费、真机、破坏性或发布副作用的 A4-A6 操作请求批准,普通可恢复的本地文件清理沿任务执行。
本领域可提议、审查,并在当前用户任务、Implementation Package、A 等级与路径范围内修改布局;所有动作与证据回到 phaser4-game-workflow-control 审计和状态迁移。布局合同和 V 阶段不能旁路带副作用的 A4-A6 操作批准或全局状态。
将 UI 布局从页面坐标修补转换为可追踪的布局合同,并把合同、实现、运行时证据接入全局控制面。仅负责布局关系、坐标空间、尺寸策略、响应式重排和布局证据;不拥有全局状态、审批、玩法规则、资源生产、视觉方向或发布放行。
视觉语言默认原则
UI 设计与实现优先用符合全局视觉基线且含义清晰、熟悉的图标、形状、层级、位置、颜色和动效表达功能;图标含义已明显时,不并列放置永久可见的重复文字说明。图标有歧义或首次学习成本高、高风险或不可逆操作、必须精确表达的状态或数值仍应使用文字;无障碍可访问名称必须保留,但不要求成为重复的可见标签。F2 应检查图标与文字重复、通用图标堆叠,以及界面脱离说明文字后是否仍足够自解释。
布局验收默认使用 visual_validation.mode=usability:位置、尺寸、边距、换行和少量对齐差异只要保持清晰、可读、可操作且不越界、裁切或关键遮挡即可通过;effect-image 也不自动启用 exact。只有用户明确要求像素级还原或项目合同明确指定时才选择 exact,启用严格容差、逐项 delta 和全视口/全状态矩阵。V2 仍必须保留拆解顺序、父子归属、锚点语义和内部几何一致性。
核心流程
- 读取项目的 GDD/TDD、当前候选、总控审核漏斗和适用视觉阶段;确定稳定 UI ID、坐标空间、参照物、状态与平台输入。
- 复制 schema 1.1.0 合同模板。普通布局使用
not-applicable并保持layout_nodes: [];冻结视觉目标先用frozen-target/specified。V2 先生成拆解图、技术 JSON 和decomposition_elements,人工修改并确认;确认后由智能视觉判断生成逐元素left/center/right × top/center/bottom决策,再由同一入口同步生成布局 PNG、layout-nodes.json、layout-decision.json、离线review.html和generation-result.json。随后登记由确认元素和视觉决策共同推导的非空layout_nodes与关键对齐合同。 - 用 Phaser 适配器 设计唯一布局入口:把视口、安全区、方向、内容尺寸和状态作为输入,分离资源 origin、布局停靠点和动画偏移,保证重排幂等。
- specified 阶段运行结构检查
node scripts/validate_ui_layout_contract.mjs <contract>;verified 正式验收必须运行node scripts/validate_ui_layout_contract.mjs <contract> --check-files --project-root .,复算冻结原图 SHA 并检查目标/运行/parity 证据文件。 - 按 证据矩阵 生成代表性视口、关键状态和窄高度证据;关键 UI/HUD 记录稳定 element/reference ID、双轴关系、目标/运行测量、实际测试 ID/状态、视觉证据和项目定义容差。
exact或明确的全覆盖需求才扩展到完整矩阵和严格 delta。 - 按 工作流门禁 接入 V0–V4、F0–F4 和 G0–G3;只有布局结构、父子归属或参照关系真实变化才退回 V1,普通位置/尺寸调整更新计划并重验受影响区域,F3 只接受绑定当前候选的工程证据。
effect-image 场景绑定
当 Work Item 的 effect_image_reconstruction.applicability=effect-image 时,布局合同必须携带 scene_reconstruction_binding:绑定冻结目标 SHA、scene/state、visual baseline、reconstruction contract 版本、layout_contract_sha256、layout_decomposition_version 和目标 viewport。layout_nodes 中每个节点必须同时绑定一个 regions/scope.ui_ids 区域和已声明坐标空间,记录参照、双轴锚点、目标 bounds、尺寸策略、层级、裁切、响应式规则与计划测试 ID;同一 coverage region 可以承载多个 layout nodes,但节点间必须使用唯一 layout_node_id,多节点区域不能用 region ID 作为有歧义的参照;关键对齐通过 layout_node_id 复用这些几何事实。该绑定描述正式 Scene 的目标关系,不能用旧通用布局合同、整屏截图、隐藏覆盖层或绝对叠图代替;只有 target SHA、父子归属、构图关系或响应式不变量真实漂移时,V2→V3 才退回 V1/PROPOSAL。其他 viewport 默认验证合同声明的不变量和可用性;只有 visual_validation.mode=exact 或明确精确需求时才要求目标 viewport 的严格还原。
V2 的布局决策顺序固定为“自动生成拆解图/技术 JSON → 人工修改并确认最终拆解 → 智能视觉判断生成显式双轴对齐决策 → 由确认元素与决策生成独立布局标注图 → 人工修改并独立确认 → 冻结 V2”。布局生成入口拒绝未确认拆解、缺失决策、元素漏绑或未绑定当前 scene/state/target 的输入;布局确认同时绑定上游拆解、视觉决策文件和最终布局图身份。
效果图节点还必须声明 parent_layout_node_id、parent_target_bounds、relative_position 和 axis_alignment。拆解确认后,智能布局结合原图构图、视觉重心和元素语义,为每个元素显式判断水平 left/center/right 与垂直 top/center/bottom;该判断不能由四边距离自动反推。relative_position 仍由父子 bounds 测量,用于复核包含关系和几何漂移;offset、self_anchor、reference_anchor 则按已选 axis_alignment 计算。reference_id 必须等于父 ID,父级仅可为具体节点或 viewport/safe-area,不得循环。视觉决策文件及其 SHA 会进入布局图和确认身份,缺失决策必须阻断布局生成。
资源导航
场景规划涉及 HUD、modal、popup、drawer 或 toast 时,必须在场景 display_layer_planning 中记录宿主场景、生命周期、输入阻断、层级、遮罩、焦点恢复和响应式事实。scene master 只承载常驻层;瞬态层按状态使用带宿主场景上下文的效果图,V4 回到宿主场景同屏验证打开→交互→关闭后的底层布局恢复。V2 COMPLETE/frozen 前仅允许隔离灰盒或无正式业务逻辑视觉样片;V3 正式资源与组合预验收通过后,正式功能代码才可启动。每个 SCENE/DISPLAY_LAYER 代码单元开始前,控制面还必须读取当前场景 Work Item 的 highFidelityPrerequisite V2 结果引用;显示层证据必须同时绑定 scene/layer/host,不能用全局冻结或内联 PASS 代替。
- 需要字段、关系表达或不变量写法时,读取 references/layout-contract.md。
- 需要 Phaser Scale、Camera、Container、DOM Overlay、resize 或重排边界时,读取 references/phaser-adapter.md。
- 需要 V/F/G 门禁、退回和候选绑定规则时,读取 references/workflow-gates.md。
- 需要组合测试、等价类削减或冻结 Golden 条件时,读取 references/evidence-matrix.md。
- 需要布局审阅页、同批产物、坐标映射、SHA 绑定或离线安全边界时,读取 references/layout-review-artifacts.md。
- 合同验证器只接受 JSON-compatible YAML(合法 YAML 1.2 的 JSON 子集),详见合同参考;直接使用 Node.js
JSON.parse。
所有权与输出
布局技能输出合同版本、布局计算输入/输出、不变量和证据索引。玩法继续独占规则、状态和交互;架构维护坐标空间与模块边界;美术维护纯表现资源和预制数据;QA 只读验证可达、截断、遮挡、触控、滚动和证据。布局计算与 Phaser GameObject 测试验证关系不变量,不把孤立绝对坐标当作通用验收标准。