test(ui): 实测构建期合成的三条承重假设并回填 spec

Auto Atlas 构建期打包 / meta 保留 uuid 后尺寸变化的表现 / Spine 整套替换。
结论写入 spec §6, 未验证项如实标注阻塞, 不假定可行。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-27 22:30:46 +08:00
co-authored by Claude Opus 5
parent e224d1fa3e
commit 669a2a5e14
2 changed files with 7 additions and 6 deletions
@@ -31,6 +31,7 @@
- 只换图片内容,**不要带 `.meta`**(UUID 在 meta 里,换了会断引用) - 只换图片内容,**不要带 `.meta`**(UUID 在 meta 里,换了会断引用)
- 因此**替换图必须与默认图同尺寸**;确需改尺寸时才连 `.meta` 一起提供(例外通道,合成脚本会覆写 uuid) - 因此**替换图必须与默认图同尺寸**;确需改尺寸时才连 `.meta` 一起提供(例外通道,合成脚本会覆写 uuid)
- Spine 必须**整套**覆盖,缺件报错;Spine 贴图豁免同尺寸约束 - Spine 必须**整套**覆盖,缺件报错;Spine 贴图豁免同尺寸约束
(⏸ 该行为尚未实测:仓库现无任何 Spine 素材,见 spec §6 待验证项 4,2026-08-27)
- 自检:`npm run check-skin <name>` - 自检:`npm run check-skin <name>`
**自定义 Prefab 不走 override**,放 `game/prefabs/`(组件替换通道,另见后续 spec)。 **自定义 Prefab 不走 override**,放 `game/prefabs/`(组件替换通道,另见后续 spec)。
@@ -315,12 +315,12 @@ npm run build-game <name> [--platform android]
以下三条是本方案的承重点,**须在第一个真实框架场景/资源出现后立即验证**,不得凭推断实现。 以下三条是本方案的承重点,**须在第一个真实框架场景/资源出现后立即验证**,不得凭推断实现。
| # | 待验证 | 验证方法 | 失败后的备选 | | # | 待验证 | 验证方法 | 失败后的备选 | 实测结论(2026-08-27,Task 2) |
|---|---|---|---| |---|---|---|---|---|
| 1 | Cocos 3.8.8 的 Auto Atlas 确在**构建期**打包,构建前替换散图能被正确纳入图集 | 造一个 `.pac` 目录,替换其中一张散图后构建,检查产物图集内容 | 改为"图集整体作为覆盖单位",由子游戏提供整套 plist+png | | 1 | Cocos 3.8.8 的 Auto Atlas 确在**构建期**打包,构建前替换散图能被正确纳入图集 | 造一个 `.pac` 目录,替换其中一张散图后构建,检查产物图集内容 | 改为"图集整体作为覆盖单位",由子游戏提供整套 plist+png | ⏸ **阻塞(非证伪)**。当前 `cocos-creator-mcp`(16 聚合工具)无法创建真正的 Auto Atlas 资产:`cocos_asset{action:"create", url:".../x.pac"}` 只生成 `importer:"directory"` 的普通文件夹,对其 `refresh`/`reimport` 均不会转成 `auto-atlas`;`asset.create` 的 tool_guide 确认参数只有 `url`/`content`/`overwrite`,无 type/importer 选项,多次独立尝试结果一致。同时 `editor.build`/`editor.open_build_panel` 均只打开构建面板,提示 "Please configure and start build manually",无法在无人工点击的情况下让构建真正产出。故本假设**未能通过现有工具验证**,需人工在编辑器 GUI 内手动 `Create > Auto Atlas` + 点击 `Build`,或等 MCP 扩展补齐这两类 action 后补测。**在此之前不得默认本假设成立去推进 Task 3 的图集相关设计。** |
| 2 | 例外通道中,除顶层 `uuid` 外,图片 `.meta` 的 `subMetas`(spriteFrame 子 uuid)是否亦需同步覆写 | 用尺寸不同的图走例外通道,检查 Prefab 引用是否仍有效 | 合成脚本一并覆写 subMetas 的 uuid | | 2 | 例外通道中,除顶层 `uuid` 外,图片 `.meta` 的 `subMetas`(spriteFrame 子 uuid)是否亦需同步覆写 | 用尺寸不同的图走例外通道,检查 Prefab 引用是否仍有效 | 合成脚本一并覆写 subMetas 的 uuid | 🟡 **部分验证,范围窄于本行原意**。实测的是更基础的前提:保留原 `.meta`、只换图片内容(同尺寸)后刷新,顶层 `uuid` 与全部 `subMetas.uuid` 均未变化;换成 128×128(仍不提供新 `.meta`,未走例外通道)后刷新,顶层 `uuid` 依旧不变,且 sprite-frame 子 meta 的 `width`/`height`/`rawWidth`/`rawHeight`/`vertices`/`uv` 被 Cocos 自动重算为 128×128(前后 meta 全文见 task-2-report.md)。**未验证**的是本行字面所指的例外通道场景(override 自带一份独立生成的 `.meta`,合成脚本只覆写顶层 `uuid`,问 `subMetas` 里的子 uuid 要不要也同步覆写)——因待验证项 1 阻塞、无法在真实 `.pac` 图集环境下复测,这条更精确的问题仍待专项验证。spec §3.2 的例外通道设计**维持不变**,不降级、不简化。 |
| 3 | `build-workspace/<name>/library/` 跨次构建复用是否可靠,资源被替换后增量导入是否正确刷新 | 连续两次 build-game,第二次改动 override,比对产物 | 放弃缓存,每次全量导入(仅影响耗时) | | 3 | `build-workspace/<name>/library/` 跨次构建复用是否可靠,资源被替换后增量导入是否正确刷新 | 连续两次 build-game,第二次改动 override,比对产物 | 放弃缓存,每次全量导入(仅影响耗时) | 未测——不在 Task 2 的 Step 1-8 范围内,`build-game.mjs` 尚未实现,留待该工具落地后验证。 |
| 4 | Cocos 的 `sp.SkeletonData` 在"整套替换内容、保留全部 `.meta`"后引用是否仍自洽(骨骼数据 ↔ atlas ↔ 贴图的 uuid 关联记在何处) | 用一套不同的 Spine 资源整套替换,检查场景内动画是否正常播放 | Spine 改走组件替换通道(子游戏注册自己的 `sp.Skeleton` 节点),不走资源覆盖 | | 4 | Cocos 的 `sp.SkeletonData` 在"整套替换内容、保留全部 `.meta`"后引用是否仍自洽(骨骼数据 ↔ atlas ↔ 贴图的 uuid 关联记在何处) | 用一套不同的 Spine 资源整套替换,检查场景内动画是否正常播放 | Spine 改走组件替换通道(子游戏注册自己的 `sp.Skeleton` 节点),不走资源覆盖 | ⏸ **阻塞:仓库无 Spine 素材**。`projects/*/assets/spine/` 全部为空,无任何可用 Spine 导出资源。`cocos_spine` 工具的全部 action(`info`/`list_animations`/`list_skins`/`set_animation`/`set_skin`/`set_property`/`set_data`/`add_socket`/`remove_socket`)都要求场景内已存在带 `sp.Skeleton` 组件的节点,无法凭空验证。已在 `framework/ui/README.md` 加提示,待第一套真实 Spine 资源到位后专项验证,**不假定其可行**。 |
--- ---