feat(ui): 资源归属骨架 + 修复 .gitignore 无锚点模式吞业务目录

framework/ui 建八个资源目录(按加载时机=图集划分)并落地归属规则文档。
根 .gitignore 的 **/native/ 与 YouleNexus 的裸 native 会静默吞掉
assets/framework/**/native/ 等业务目录; 改为各工程 .gitignore 用锚定
路径负责生成物, 根只管仓库级条目。种子补 .gitignore 使新子游戏继承。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-27 21:15:26 +08:00
co-authored by Claude Opus 5
parent 65f0998fbd
commit 8a40e682ab
12 changed files with 60 additions and 14 deletions
+7 -8
View File
@@ -17,14 +17,13 @@ yarn-error.log*
# ---------- Node 依赖 ---------- # ---------- Node 依赖 ----------
**/node_modules/ **/node_modules/
# ---------- Cocos Creator 工程生成物(可由编辑器重建,勿入库) ---------- # ---------- Cocos Creator 工程生成物 ----------
# 适用于 cocoscreator_projects/ 下所有工程 # 由各工程自己的 .gitignore 用锚定路径负责(YouleNexus/.gitignore、templates/game-seed/.gitignore)。
**/library/ # 此处**不得**再写 **/library/ 这类无锚点模式——它会连 assets/framework 下的
**/temp/ # native/ local/ profiles/ 等业务目录一起吞掉(已踩过,见 plan 2026-08-27 Task 1)。
**/local/
**/build/ # 构建流水线的临时工程(build-game 产生,可随时重建)
**/native/ cocoscreator_projects/build-workspace/
**/profiles/
# ---------- 子游戏共享框架的 junction(指向 YouleNexus 真源,按机器重建) ---------- # ---------- 子游戏共享框架的 junction(指向 YouleNexus 真源,按机器重建) ----------
# 由 scripts/setup-links 在每台机器上重建,不入库 # 由 scripts/setup-links 在每台机器上重建,不入库
+6 -6
View File
@@ -2,12 +2,12 @@
#/////////////////////////// #///////////////////////////
# Cocos Creator 3D Project # Cocos Creator 3D Project
#/////////////////////////// #///////////////////////////
library/ /library/
temp/ /temp/
local/ /local/
build/ /build/
profiles/ /profiles/
native /native/
#////////////////////////// #//////////////////////////
# NPM # NPM
#////////////////////////// #//////////////////////////
@@ -0,0 +1,36 @@
# 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 只对同目录散图生效,故目录结构是性能设计:
| 目录 | 用途 |
|---|---|
| `atlas-common/` | 全程常驻:按钮、面板底、图标、通用弹窗 |
| `atlas-login/` / `atlas-hall/` / `atlas-room/` | 各场景专用,按加载时机切分 |
| `standalone/` | 超图集尺寸上限的大图、整屏背景(不进图集) |
| `spine/` | Spine 骨骼动画,**每个资源一个子目录**,含骨骼数据/atlas/贴图 |
| `audio/` / `font/` | 平台音效 / 字体 |
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 贴图豁免同尺寸约束
- 自检:`npm run check-skin <name>`
**自定义 Prefab 不走 override**,放 `game/prefabs/`(组件替换通道,另见后续 spec)。
@@ -0,0 +1,11 @@
# Cocos Creator 工程生成物(锚定到本工程根,勿用无锚点模式——会吞掉 assets 下同名目录)
/library/
/temp/
/local/
/build/
/profiles/
/native/
node_modules/
.vscode/
.idea/