From 669a2a5e14fd31118889d81e8632a7e939d988a9 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 22:30:46 +0800 Subject: [PATCH] =?UTF-8?q?test(ui):=20=E5=AE=9E=E6=B5=8B=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=9C=9F=E5=90=88=E6=88=90=E7=9A=84=E4=B8=89=E6=9D=A1?= =?UTF-8?q?=E6=89=BF=E9=87=8D=E5=81=87=E8=AE=BE=E5=B9=B6=E5=9B=9E=E5=A1=AB?= =?UTF-8?q?=20spec?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Auto Atlas 构建期打包 / meta 保留 uuid 后尺寸变化的表现 / Spine 整套替换。 结论写入 spec §6, 未验证项如实标注阻塞, 不假定可行。 Co-Authored-By: Claude Opus 5 (1M context) --- .../YouleNexus/assets/framework/ui/README.md | 1 + .../specs/2026-08-27-ui-asset-and-skin-design.md | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/cocoscreator_projects/YouleNexus/assets/framework/ui/README.md b/cocoscreator_projects/YouleNexus/assets/framework/ui/README.md index c9872ed..9021a2e 100644 --- a/cocoscreator_projects/YouleNexus/assets/framework/ui/README.md +++ b/cocoscreator_projects/YouleNexus/assets/framework/ui/README.md @@ -31,6 +31,7 @@ - 只换图片内容,**不要带 `.meta`**(UUID 在 meta 里,换了会断引用) - 因此**替换图必须与默认图同尺寸**;确需改尺寸时才连 `.meta` 一起提供(例外通道,合成脚本会覆写 uuid) - Spine 必须**整套**覆盖,缺件报错;Spine 贴图豁免同尺寸约束 + (⏸ 该行为尚未实测:仓库现无任何 Spine 素材,见 spec §6 待验证项 4,2026-08-27) - 自检:`npm run check-skin ` **自定义 Prefab 不走 override**,放 `game/prefabs/`(组件替换通道,另见后续 spec)。 diff --git a/docs/superpowers/specs/2026-08-27-ui-asset-and-skin-design.md b/docs/superpowers/specs/2026-08-27-ui-asset-and-skin-design.md index e79a02f..6176d0d 100644 --- a/docs/superpowers/specs/2026-08-27-ui-asset-and-skin-design.md +++ b/docs/superpowers/specs/2026-08-27-ui-asset-and-skin-design.md @@ -315,12 +315,12 @@ npm run build-game [--platform android] 以下三条是本方案的承重点,**须在第一个真实框架场景/资源出现后立即验证**,不得凭推断实现。 -| # | 待验证 | 验证方法 | 失败后的备选 | -|---|---|---|---| -| 1 | Cocos 3.8.8 的 Auto Atlas 确在**构建期**打包,构建前替换散图能被正确纳入图集 | 造一个 `.pac` 目录,替换其中一张散图后构建,检查产物图集内容 | 改为"图集整体作为覆盖单位",由子游戏提供整套 plist+png | -| 2 | 例外通道中,除顶层 `uuid` 外,图片 `.meta` 的 `subMetas`(spriteFrame 子 uuid)是否亦需同步覆写 | 用尺寸不同的图走例外通道,检查 Prefab 引用是否仍有效 | 合成脚本一并覆写 subMetas 的 uuid | -| 3 | `build-workspace//library/` 跨次构建复用是否可靠,资源被替换后增量导入是否正确刷新 | 连续两次 build-game,第二次改动 override,比对产物 | 放弃缓存,每次全量导入(仅影响耗时) | -| 4 | Cocos 的 `sp.SkeletonData` 在"整套替换内容、保留全部 `.meta`"后引用是否仍自洽(骨骼数据 ↔ atlas ↔ 贴图的 uuid 关联记在何处) | 用一套不同的 Spine 资源整套替换,检查场景内动画是否正常播放 | Spine 改走组件替换通道(子游戏注册自己的 `sp.Skeleton` 节点),不走资源覆盖 | +| # | 待验证 | 验证方法 | 失败后的备选 | 实测结论(2026-08-27,Task 2) | +|---|---|---|---|---| +| 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 | 🟡 **部分验证,范围窄于本行原意**。实测的是更基础的前提:保留原 `.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//library/` 跨次构建复用是否可靠,资源被替换后增量导入是否正确刷新 | 连续两次 build-game,第二次改动 override,比对产物 | 放弃缓存,每次全量导入(仅影响耗时) | 未测——不在 Task 2 的 Step 1-8 范围内,`build-game.mjs` 尚未实现,留待该工具落地后验证。 | +| 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 资源到位后专项验证,**不假定其可行**。 | ---