按 multi-frame sprite 迁移规则 (playbook 2026-09-03 §关键迁移规则) 用 atlas 真实 SpriteFrame UUID: ## 节点 (按 spec 已核实映射表) - group-3: 公告内容 Label (id=145, X=81 Y=787 W=60 H=20) - group-95 popup: - Bgsprite ProgressBar (id=3122, X=0 Y=0 W=1280 H=720, spriteFrame dcc4530b atlas-common 00010.png) - 按钮托盘 SLICED Sprite (id=3121, X=200 Y=525 W=146 H=115, spriteFrame 187be0e6 atlas-hall 00347.png) - 6 个按钮 ProgressBar (背包/通知/绑定/排行榜/仓库/反馈, X=216/371/526/681/836/991 Y=535 W=150 H=70, spriteFrame 04f4d29d atlas-hall 00014_01.png multi-frame) ## 锚点公式 (validated) cocos_lpos.x = original_X + original_W/2 - 640 cocos_lpos.y = 360 - (original_Y + original_H/2) ## 验证 - validate_prefab_references: 18 个引用 0 missing UUID - imported:true + invalid:false (Cocos editor 加载成功) - 完整 9-spirit popup (group-3 + group-95) 与原 Layer00008.xml 字段 1:1 匹配 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
framework/ui — 平台界面资源(框架真源)
完整设计见
docs/superpowers/specs/2026-08-27-ui-asset-and-skin-design.md。 本文件是该 spec §2「资源归属规则」的落地速查,改动前先读 spec。
唯一判定标准
凡是放进 framework/ 的,都会出现在每一个子游戏的包里。
四条规则
-
框架带完整一套默认皮肤,不是占位图。依据:旧项目 444 个可比对平台资源中 73.9% 在子游戏间完全相同;框架不带默认,这部分就要在每个子游戏各存一份且改了不会传播。
-
只放「所有子游戏都需要」的平台界面资源。判定问句:下一个子游戏还需要它吗? 「部分子游戏共用」不构成进框架的理由——放进去等于让其余子游戏白背包体。
-
目录划分 = 图集划分。Cocos 的 Auto Atlas 只对同目录散图生效,故目录结构是性能设计。 以下 8 个目录是可覆盖资源范围的全部(
scripts/lib/skin.mjs的COVERABLE_DIRS白名单, 与此表逐字对应):目录 用途 atlas-common/全程常驻:按钮、面板底、图标、通用弹窗 atlas-login//atlas-hall//atlas-room/各场景专用,按加载时机切分 standalone/超图集尺寸上限的大图、整屏背景(不进图集) spine/Spine 骨骼动画,每个资源一个子目录,含骨骼数据/atlas/贴图 audio//font/平台音效 / 字体 theme/不在此列——那是 §4.2 规定的框架 TypeScript 代码位置(类型契约 + 默认值 + 合并 + Provider),不是资源,不可覆盖、也不计入"框架可覆盖资源共 N 个"的统计。子游戏若在override/theme/下放文件会被判为orphan(框架里没有对应的可覆盖路径)。 -
图片资源统一用 PNG。非 PNG 图片不做尺寸校验(
scripts/lib/skin.mjs),会削弱保护。
子游戏怎么换肤
在 games/<name>/assets/game/override/ 下放同路径同名文件即可,例如
override/atlas-hall/btn_start.png 覆盖 framework/ui/atlas-hall/btn_start.png。
- 只换图片内容,不要带
.meta(UUID 在 meta 里,换了会断引用) - 因此替换图必须与默认图同尺寸;确需改尺寸时才连
.meta一起提供(例外通道,合成脚本会覆写 uuid) - Spine 必须整套覆盖,缺件报错;Spine 贴图豁免同尺寸约束 (⏸ 该行为尚未实测:仓库现无任何 Spine 素材,见 spec §6 待验证项 4,2026-08-27)
- 自检:
npm run check-skin <name>
自定义 Prefab 不走 override,放 game/prefabs/(组件替换通道,另见后续 spec)。