NLDClient-yudde/.ai/skills/ui-prefab-dev/SKILL.md

129 lines
3.9 KiB
Markdown
Raw Normal View History

---
name: ui-prefab-dev
2026-05-08 13:25:20 +08:00
description: Unity UI Prefab 开发:结构分析、组件修改、代码生成。涉及 UI Prefab 层级查看、组件属性读取、UI 控制器代码编写。触发关键词UI界面 UI开发、Prefab 预制体、UIBaseController、AutoGen、UGUI、RectTransform、Image Button Text、ScrollRect 列表、extract_ui_prefab、ExtractedPrefabs、UI控制器。
version: "1.0"
updated: "2026-05-08"
---
# UI Prefab 开发
分析、修改和生成 Unity UI Prefab 及相关 C# 控制器代码。
## 前置知识
- **UI Prefab 位置**: `Assets/` 下的各 UI 模块目录
- **UI 控制器代码**: `Assets/Code/Scripts/GamePlay/UI/`60+ 控制器)
- **生成代码标记**: `*Controller.AutoGen.cs` 文件(自动生成,勿手动修改)
- **ExtractedPrefabs**: `ExtractedPrefabs/` 目录存放导出的 Prefab JSON 结构
- **JSON 格式说明**: `ExtractedPrefabs/README.md`
## 工作流
### 1. 获取 UI Prefab 结构
通过 Unity MCP 提取 Prefab 结构信息:
```
execute_custom_tool: {
tool_name: "extract_ui_prefab",
parameters: { prefab_path: "Assets/xxx/xxx.prefab" }
}
```
读取返回的 JSON 文件,参考 `ExtractedPrefabs/README.md` 理解 JSON 格式。
> **重要**: 每次分析前都需重新提取(避免读取旧数据)。
### 2. 理解 UI 层级结构
JSON 格式和属性格式定义见 `ExtractedPrefabs/README.md`
常见组件类型:
- **RectTransform**: 锚点、位置、尺寸
- **Image**: Sprite 引用、Color、ImageType、RaycastTarget
- **Text/TMP_Text**: 文本内容、字体、字号、颜色
- **Button**: Transition 类型、颜色状态
- **CanvasRenderer**: 渲染参数
### 3. 分析 UI 控制逻辑
UI 控制器代码模式:
```
// 手动编写的控制器(可修改)
public class UI_XXXController : UIBaseController
{
// 绑定 UI 组件引用
// 业务逻辑方法
}
// 自动生成的控制器(不可手动修改)
public class UI_XXXController.AutoGen : ...
{
// 自动生成的组件绑定代码
}
```
### 4. 修改或创建 UI
修改已有 UI
1. 提取 Prefab JSON 了解当前结构
2. 查看对应的 `*Controller.cs` 了解代码逻辑
3. 修改 Prefab通过 Unity Editor或代码
4. 确保 AutoGen 和手动代码分工明确
创建新 UI
1. 在 Unity 中创建 Prefab
2. 编写对应的 Controller 类(继承 UIBaseController
3. 如需自动绑定,编写 AutoGen 辅助类
4. 注册到 UI 管理系统中
## 不适用场景
- 纯逻辑 UI 改动(不涉及 Prefab 结构变化)→ 直接改 Controller 代码即可
- 简单的位置/颜色微调 → 无需走完整提取流程,直接描述修改即可
## 属性格式参考
| 类型 | 格式示例 |
|------|----------|
| Vector2 | `AnchoredPosition:0,0` |
| Vector3 | `LocalPosition:0,0,0` |
| Color | `Color:#RRGGBBAA` |
| Bool | `RaycastTarget:true` |
| Enum | `ImageType:Sliced` |
| 引用 | `Sprite:icon_name` |
## UI 模块索引
```
GamePlay/UI/
├── Activity/ # 活动界面
├── BattlePass/ # 战令
├── Camp/ # 营地
├── Character/ # 角色界面
├── Dispatch/ # 派遣
├── Draw/ # 抽卡
├── Legion/ # 军团
├── LegionBattle/ # 军团战
├── LegionPve/ # 军团PVE
├── LevelFight/ # 关卡战斗
├── Loading/ # 加载界面
├── Login/ # 登录
├── Mail/ # 邮件
├── Package/ # 背包
├── PVP/ # PVP
├── Raffle/ # 抽奖
├── Shop/ # 商店
├── Story/ # 剧情
├── Task/ # 任务
└── Team/ # 编队
```
## 安全规则
- AutoGen 文件(`*Controller.AutoGen.cs`)不可手动修改
- Prefab 修改后需要在 Unity 中保存,.meta 文件由 Unity 自动生成
- 图片资源引用确保路径正确,避免丢失引用
- UI 变更可能影响多个界面,修改前确认影响范围