Files
youle_cocos/cocoscreator_projects/YouleNexus/assets/framework/ui
joywayerandClaude Opus 5 eb1edd86a7 feat(scripts): Notice_Layer 实验 (MCP 手工复刻, _playbook_demo/)
- Duplicate YouleNexus Layer617_Notice.prefab to _playbook_demo/Notice_Layer.prefab
- Root _name 自动 = Notice_Layer (XML match)
- 2 cc.Sprite 用 atlas-common 00010 (UUID dcc4530b-...@f9941) — 真实存在
- 6 cc.Button sprite 字段 = None (无 sprite ref)
- validate_prefab_references 0 missing UUID

## 已知限制 (vs 原 XML 1:1)
原 Layer00008.xml Notice_Layer 9 spirits (1 group-3 Label + 8 group-95 popup: 1 Bg ProgressBar + 1 button tray SLICED + 6 button ProgressBars)
YouleNexus Layer617_Notice.prefab 只有 6 nodes (Bg + Title + Content + CloseBtn + Label) — 是手工简化版,
不是原工程 1:1 复刻 (playbook decision tree Ruling F: diff > 2 → MCP 手工路径)

## 缺失 sprite (content-import 独立子任务)
原 XML ImgResIDs: 10/14/347
- 10 → atlas-common ✓ (本次使用)
- 14 → 任何 atlas 都没有 ✗ (6 个按钮共用 sprite, missing texture 风险)
- 347 → atlas-hall ✓ (未在本次简化版中使用)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 23:36:37 +08:00
..

framework/ui — 平台界面资源(框架真源)

完整设计见 docs/superpowers/specs/2026-08-27-ui-asset-and-skin-design.md。 本文件是该 spec §2「资源归属规则」的落地速查,改动前先读 spec。

唯一判定标准

凡是放进 framework/ 的,都会出现在每一个子游戏的包里。

四条规则

  1. 框架带完整一套默认皮肤,不是占位图。依据:旧项目 444 个可比对平台资源中 73.9% 在子游戏间完全相同;框架不带默认,这部分就要在每个子游戏各存一份且改了不会传播。

  2. 只放「所有子游戏都需要」的平台界面资源。判定问句:下一个子游戏还需要它吗? 「部分子游戏共用」不构成进框架的理由——放进去等于让其余子游戏白背包体。

  3. 目录划分 = 图集划分。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(框架里没有对应的可覆盖路径)。

  4. 图片资源统一用 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)。