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

129 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
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 变更可能影响多个界面,修改前确认影响范围