diff --git a/docs/superpowers/specs/2026-09-03-interface-conversion-playbook.md b/docs/superpowers/specs/2026-09-03-interface-conversion-playbook.md index 46ff971..38495b4 100644 --- a/docs/superpowers/specs/2026-09-03-interface-conversion-playbook.md +++ b/docs/superpowers/specs/2026-09-03-interface-conversion-playbook.md @@ -180,6 +180,29 @@ mcp__funplay_cocos__validate_prefab_references ## 已知限制(2026-09-02 实测) +## 关键迁移规则:原工程多帧 sprite → Cocos 多张散图 + +**原工程** (gameabc 引擎): 一个 sprite PNG 含多个动画帧 (e.g. `00014.png` 含 12 frames) +**Cocos 引擎**: 一个 sprite PNG → 一个 spriteFrame, 多帧 = 多张散图 + +**映射规则**: + +| 原工程 | Cocos | +|---|---| +| `00014.png` (1 file, 12 frames) | `00014_01.png` ~ `00014_12.png` (12 files, 各含一个 spriteFrame rect) | +| `frame_all` 字段 (gameabc_Image.json) | 子图数量 = frame_all | +| SpriteFrame 引用单个 texture (atlas image) | SpriteFrame rect 指向 atlas image 的 sub-region | + +**验证方法**: +1. 读 `projects/Game_Surface_3/output/gameabc_Image.json` 找 id=ImgResID 的 entry,确认 bmp=00014.png + frame_all=12 +2. 在 YouleNexus assets/framework/ui/atlas-*/ 找 00014_01.png ~ 00014_12.png (12 个文件) +3. 读对应 00014_01.png.meta 找 subMetas 里 name=spriteFrame 的 UUID + imageUuidOrDatabaseUri +4. 在 Notice prefab 的 6 按钮 ProgressBar 用这个 spriteFrame UUID 引用 + +**当前实测**: +- `00014_01.png` 的 spriteFrame UUID = `04f4d29d-861f-4b46-930a-baf544a80b1b@f9941` (atlas-hall) +- 6 个按钮都引用同一个 spriteFrame UUID (Cocos atlas 9-slice 自动共享 sprite, 类似原 HTML5 sprite 复用) + ### 类型 4 = cc.EditBox 是 best-fit - `phoneInfo` (Layer00029): 3 个 type-4 spirit 真的是 EditBox (42×28 输入框)