129 lines
3.9 KiB
Markdown
129 lines
3.9 KiB
Markdown
---
|
||
name: ui-prefab-dev
|
||
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 变更可能影响多个界面,修改前确认影响范围
|