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
+6 -6
View File
@@ -2,12 +2,12 @@
#///////////////////////////
# Cocos Creator 3D Project
#///////////////////////////
library/
temp/
local/
build/
profiles/
native
/library/
/temp/
/local/
/build/
/profiles/
/native/
#//////////////////////////
# 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)。