Add hot-update boot pipeline, UI bundles/atlas assets, and design docs.
Ignore AIClient/Library and AIClient/HybridCLRData permanently; include HybridCLR/YooAsset project setup and UI tooling. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# UI 生成提示词(AI JSON 契约)
|
||||
|
||||
> 可直接作为系统提示词。完整说明见 `Doc/Rule/UIGenerationRules.md`。
|
||||
|
||||
你是本项目的 Unity UI 原型生成器。**唯一产物是一份 JSON**,写入 `Doc/UIPrefabCreater/{界面名}.json`,由编辑器转为 UGUI Prefab。不要输出 HTML、C#、Markdown 说明。JSON 必须符合 `JsonUIPrefabBuilder` 当前能力。
|
||||
|
||||
## 1. 强制上下文
|
||||
|
||||
- `Doc/Rule/UnityUIProject.md`
|
||||
- `Doc/Design/UI_Design_Principles.md`
|
||||
- `Doc/UI_Normal_Set.md`(或 `UI_Pic_Set.md`)
|
||||
- `Doc/UIPrefabCreater/UI_ConfirmDialog.json`
|
||||
- `AIClient/Assets/Editor/UI/JsonUIPrefabBuilder.cs`
|
||||
|
||||
## 2. 唯一产物字段
|
||||
|
||||
- `schemaVersion`: `1`
|
||||
- `prefabName` = 根节点 `name`
|
||||
- `prefabPath`: `Assets/Bundles/UI/Prefab/{prefabName}.prefab`
|
||||
- `description`: 用途、层级(HUD/Normal/Dialog/Tips)、绑定方式
|
||||
- `canvas.canvasScaler.referenceResolution`: **必须 `[1080, 1920]`**,`matchWidthOrHeight` 建议 `0.5`
|
||||
- `assets.sprites`: 短名 → `Assets/Bundles/UI/Texture/Common/{name}.png`(或业务子目录)
|
||||
- `nodes` / `bindings` / `events`
|
||||
|
||||
## 3. 骨架
|
||||
|
||||
```json
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"prefabName": "UI_Example",
|
||||
"prefabPath": "Assets/Bundles/UI/Prefab/UI_Example.prefab",
|
||||
"description": "Normal 层功能界面。竖屏。",
|
||||
"canvas": {
|
||||
"canvasScaler": {
|
||||
"referenceResolution": [1080, 1920],
|
||||
"matchWidthOrHeight": 0.5
|
||||
}
|
||||
},
|
||||
"assets": { "sprites": {} },
|
||||
"nodes": [],
|
||||
"bindings": [],
|
||||
"events": []
|
||||
}
|
||||
```
|
||||
|
||||
## 4. 节点
|
||||
|
||||
每节点:`name`、`parent`(根为 `null`)、`active`、`rect`、`components`。父节点必须先于子节点。竖屏布局:主面板居中;关键操作区偏下;安全区 ≥24。
|
||||
|
||||
## 5. 支持组件
|
||||
|
||||
Canvas、CanvasScaler、GraphicRaycaster、CanvasGroup、Image、TextMeshProUGUI、Button、Shadow、Outline、ScrollRect、RectMask2D、Mask、TMP_InputField、VerticalLayoutGroup、ContentSizeFitter、LayoutElement、MonoBehaviour。
|
||||
|
||||
不要依赖未实现的 Toggle/Slider/Scrollbar/TMP_Dropdown/ScrollView 完成核心功能。
|
||||
|
||||
## 6. 视觉
|
||||
|
||||
- 糖果风:大圆角、描边、顶部高光;配色见 Design Principles。
|
||||
- 优先复用 Common 切图名(`ui_panel_*`、`btn_primary_*` 等)。
|
||||
- 可拉伸控件 `"imageType": "Sliced"`;图标 Simple。
|
||||
- 文字仅 `TextMeshProUGUI`;浅色字加 Outline/Shadow(`#102033` / `#0B1724`)。
|
||||
- 按钮优先 SpriteSwap;缺 hover 图可用 ColorTint。
|
||||
- 缺图时在 `description` 标明,按 `ResourceCreate.md` 生成并登记 `Doc/ResDesc_Picture.md`。
|
||||
|
||||
## 7. 事件
|
||||
|
||||
- `bindings`: 业务需访问的节点名。
|
||||
- `events`: `{ "name": "Example.Ok", "node": "Btn_Ok" }`;`onClick` 仅为标记。
|
||||
- 可选 `MonoBehaviour.typeName`(HotUpdate 程序集类型全名)。
|
||||
|
||||
## 8. 输出前自检
|
||||
|
||||
只输出 JSON;根唯一;`[1080,1920]`;Sprite 已登记;Sliced/TMP/bindings 合法。
|
||||
@@ -0,0 +1,83 @@
|
||||
# UI 生成规则(AI JSON → Prefab)
|
||||
|
||||
> AIGame 竖屏微信小游戏版。精简系统提示词见 `Doc/Rule/UIGenerationPrompt.md`。总览见 `Doc/UI_AutoGen_Overview.md`。
|
||||
|
||||
## Part A - 流水线
|
||||
|
||||
```text
|
||||
需求说明
|
||||
-> AI 读规则/设计/切图清单/样例 JSON
|
||||
-> 生成 Doc/UIPrefabCreater/{UIName}.json
|
||||
-> Unity 获焦或菜单 Tools/UI/...
|
||||
-> JsonUIPrefabBuilder 生成 Assets/Bundles/UI/Prefab/{UIName}.prefab
|
||||
-> HotUpdate C# 按节点名 / bindings / events 接管
|
||||
```
|
||||
|
||||
不使用 HTML 中间层。转换器:
|
||||
|
||||
- `AIClient/Assets/Editor/UI/JsonUIPrefabBuilder.cs`
|
||||
- `AIClient/Assets/Editor/UI/JsonUIAutoConvert.cs`
|
||||
|
||||
### 目录
|
||||
|
||||
| 类型 | 路径 |
|
||||
| --- | --- |
|
||||
| JSON | `Doc/UIPrefabCreater/{UIName}.json` |
|
||||
| Prefab | `Assets/Bundles/UI/Prefab/{UIName}.prefab` |
|
||||
| 通用贴图 | `Assets/Bundles/UI/Texture/Common/` |
|
||||
| 业务贴图 | `Assets/Bundles/UI/Texture/<Module>/` |
|
||||
|
||||
## Part B - AI 契约
|
||||
|
||||
### 必读
|
||||
|
||||
- `Doc/Rule/UnityUIProject.md`
|
||||
- `Doc/Design/UI_Design_Principles.md`
|
||||
- `Doc/UI_Normal_Set.md` 或 `Doc/UI_Pic_Set.md`
|
||||
- `Doc/UIPrefabCreater/UI_ConfirmDialog.json`(样例)
|
||||
- 转换器当前支持的组件(以代码为准)
|
||||
|
||||
### 顶层字段
|
||||
|
||||
`schemaVersion`(`1`)、`prefabName`、`prefabPath`、`description`、`canvas`、`assets`、`nodes`、`bindings`、`events`。
|
||||
|
||||
`canvas.canvasScaler.referenceResolution` **必须为 `[1080, 1920]`**。
|
||||
|
||||
### 命名
|
||||
|
||||
英文节点:`UI_` / `Panel` / `Img_` / `Txt_` / `Btn_` / `Scroll_` / `Group_`。
|
||||
|
||||
### 可生成组件
|
||||
|
||||
Canvas、CanvasScaler、GraphicRaycaster、CanvasGroup、Image、TextMeshProUGUI、Button、Shadow、Outline、ScrollRect、RectMask2D、Mask、TMP_InputField、VerticalLayoutGroup、ContentSizeFitter、LayoutElement、MonoBehaviour。
|
||||
|
||||
未完整实现(跳过/告警):Toggle、TMP_Dropdown、Slider、Scrollbar、ScrollView(请用 ScrollRect)。
|
||||
|
||||
### 按钮 / 列表模板
|
||||
|
||||
- 按钮:`Image`(Sliced)+ `Button`(SpriteSwap:normal/pressed/disabled;无 hover 切图可用 ColorTint)。
|
||||
- 列表:`ScrollRect` → Viewport(RectMask2D)→ Content(VerticalLayoutGroup + ContentSizeFitter)→ Item_Template。
|
||||
|
||||
## Part C - 接管与排错
|
||||
|
||||
1. 确认自动转换开启,或执行 `Convert Changed JSON Prefabs Now`。
|
||||
2. 看 Console `[UIGen]` 日志。
|
||||
3. 打开 Prefab 核对层级/Sprite/文字。
|
||||
4. HotUpdate 挂控制器:`transform.Find` / 递归按名查找;`button.onClick.AddListener`。
|
||||
5. 资源加载走 YooAsset **异步**(见 `ProjectDesign.md` / `UnityUIProject.md`)。
|
||||
|
||||
| 现象 | 处理 |
|
||||
| --- | --- |
|
||||
| JSON 不转换 | 获焦/手动菜单;确认 JSON 比 Prefab 新 |
|
||||
| referenceResolution 错误 | 改为 `[1080,1920]` |
|
||||
| 找不到 Sprite | 短名与 Common 切图一致;Texture Type=Sprite |
|
||||
| 文字不可读 | Outline/Shadow,色 `#102033` / `#0B1724` |
|
||||
|
||||
### 提交前自检
|
||||
|
||||
- JSON 在 `Doc/UIPrefabCreater`;唯一根节点;`prefabName` 一致。
|
||||
- 父先于子;Sprite 已登记;九宫格 `Sliced`;TMP;bindings/events 节点存在。
|
||||
|
||||
## Part D - 后续
|
||||
|
||||
优先补齐转换器:Toggle → Slider → Scrollbar → TMP_Dropdown。图集自动化见 `Doc/UI_Atlas_Pipeline.md`。
|
||||
@@ -0,0 +1,58 @@
|
||||
# Unity UI 工程约定(AIGame)
|
||||
|
||||
> 从 AIC# `UnityProject.md` 抽取 UI 相关条款,并按本仓库竖屏 / Bundles / YooAsset / HybridCLR 改写。
|
||||
|
||||
## 环境
|
||||
|
||||
- Unity:`2022.3.62f3`(`AIClient/ProjectSettings/ProjectVersion.txt`)
|
||||
- 客户端:`AIClient/`
|
||||
- 屏幕:**竖屏**;UI 设计分辨率 **`1080×1920`**
|
||||
- 资源包:YooAsset;业务代码:HybridCLR HotUpdate
|
||||
|
||||
## 目录
|
||||
|
||||
| 用途 | 路径 |
|
||||
| --- | --- |
|
||||
| 通用 UI 贴图 | `Assets/Bundles/UI/Texture/Common` |
|
||||
| 业务 UI 贴图 | `Assets/Bundles/UI/Texture/<Module>` |
|
||||
| UI Prefab | `Assets/Bundles/UI/Prefab` |
|
||||
| UI 字体 | `Assets/Bundles/UI/Font`(源文件 `siyuan_CN_Bold.otf`,TMP:`siyuan_CN_Bold SDF.asset`) |
|
||||
| JSON 描述 | 仓库根 `Doc/UIPrefabCreater` |
|
||||
| 热更 UI 脚本 | `Assets/HotUpdate/Scripts/UI` |
|
||||
| AOT 启动条 | `Assets/AOT/Scripts/UI`(仅补丁/启动,不放业务面板) |
|
||||
|
||||
## UI 挂载层级
|
||||
|
||||
运行时挂到 `UIRoot` 子节点(待实现时保持约定):
|
||||
|
||||
- **HUD** → **Normal** → **Dialog** → **Tips**(越上越前)
|
||||
|
||||
## UI 制作流程
|
||||
|
||||
1. 设计竖屏界面;优先复用 Common 切图(`Doc/UI_Normal_Set.md` / `UI_Pic_Set.md`)。
|
||||
2. 输出 `Doc/UIPrefabCreater/{UIName}.json`(契约见 `UIGenerationPrompt.md`)。
|
||||
3. Unity 获焦自动生成 Prefab,或菜单 `Tools/UI/...`。
|
||||
4. HotUpdate C# 接管:按名找节点,异步加载资源。
|
||||
5. 新贴图走 `ResourceCreate.md`,登记 `Doc/ResDesc_Picture.md`。
|
||||
|
||||
## JSON → Prefab 要点
|
||||
|
||||
- `referenceResolution`: `[1080, 1920]`
|
||||
- 文字:仅 TextMeshPro,默认字体 `Assets/Bundles/UI/Font/siyuan_CN_Bold SDF.asset`(由 `siyuan_CN_Bold.otf` 生成,动态图集);浅色字描边/阴影非纯黑。
|
||||
- 九宫格:`imageType: Sliced`
|
||||
- 按钮:SpriteSwap 优先
|
||||
- `MonoBehaviour.typeName` 指向 HotUpdate 类型
|
||||
|
||||
## 资源加载
|
||||
|
||||
- **一律异步**(YooAsset);禁止新写同步加载热更资源。
|
||||
- Prefab/贴图路径建议带 `Assets/Bundles/...`。
|
||||
|
||||
## 与图集方案关系
|
||||
|
||||
- 现阶段允许 Common 下单图 Sprite 直接被 Prefab 引用。
|
||||
- 目录级自动 SpriteAtlas / 打包绑定见 `Doc/UI_Atlas_Pipeline.md`(后续里程碑)。
|
||||
|
||||
## Agent 边界
|
||||
|
||||
遵守 `UNITY-GUIDE.md`:可直接改 JSON/MD/C#;不手改 `.prefab`/`.meta`;Prefab 由转换器或 Pipeline 生成。
|
||||
Reference in New Issue
Block a user