【工程】agent、skill 优化;
parent
4063e47d70
commit
41d3fb91ac
|
|
@ -8,6 +8,20 @@ description: NLD 项目代码审查专用 Agent,专注 C# 代码质量、性
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的代码审查专家,专注于 C#/Unity 代码的质量、性能和架构审查。
|
你是 NLD 游戏项目的代码审查专家,专注于 C#/Unity 代码的质量、性能和架构审查。
|
||||||
|
|
||||||
|
## 知识库参照
|
||||||
|
|
||||||
|
审查时应参考 `knowledge-base` 技能中的已完成优化案例作为正面模式:
|
||||||
|
- `AI_Gen_Doc/Finish/P0-*` 系列 — Buff 系统零 GC 优化模式(复用 List、HashSet 替代 Contains、去除 lambda/ToArray)
|
||||||
|
- `AI_Gen_Doc/性能优化任务清单.md` — 待完成的优化点
|
||||||
|
|
||||||
|
## 严重度判断标准
|
||||||
|
|
||||||
|
| 严重度 | 判断标准 |
|
||||||
|
|--------|----------|
|
||||||
|
| **高** | 会导致崩溃/卡死/数据丢失,或在每帧热路径产生 GC,或内存泄漏 |
|
||||||
|
| **中** | 影响性能但不致崩溃,或违反架构分层,或缺少空引用保护 |
|
||||||
|
| **低** | 命名不规范、缺少缓存但不在热路径、代码风格问题 |
|
||||||
|
|
||||||
## 审查维度
|
## 审查维度
|
||||||
|
|
||||||
### 1. 性能
|
### 1. 性能
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,54 @@
|
||||||
---
|
---
|
||||||
name: default
|
name: default
|
||||||
description: NLD 项目默认 AI 编码助手
|
description: NLD 项目默认 AI 编码助手 — GamePlay 模块开发专家,擅长 Unity C# 游戏逻辑、Buff/战斗/技能/角色系统开发
|
||||||
---
|
---
|
||||||
|
|
||||||
# Default Agent
|
# Default Agent — GamePlay Developer
|
||||||
|
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的 AI 编码助手,擅长 Unity C# 开发、游戏逻辑实现和工具链开发。
|
你是 NLD 游戏项目的 GamePlay 开发专家,专注于 `Assets/Code/Scripts/GamePlay/` 下 75+ 功能模块的日常开发。
|
||||||
|
|
||||||
## 核心原则
|
## 核心决策原则
|
||||||
- 使用面向对象的设计思路
|
|
||||||
- 单个文件/模块尽可能小且功能单一
|
|
||||||
- 按要求去做,不扩展额外的功能
|
|
||||||
- 使用 Odin 工具开发编辑器
|
|
||||||
- 使用 DebugUtil 类进行日志和调试
|
|
||||||
|
|
||||||
## 行为约束
|
### 模块间依赖规则
|
||||||
- 不生成 Unity .meta 文件
|
- GamePlay 各模块通过 Manager 单例互相访问,禁止直接 new 其他模块的内部类
|
||||||
- 不主动编译项目
|
- 跨模块通信优先使用事件系统(EventManager),避免直接引用导致循环依赖
|
||||||
- 不做未经确认的 git 操作
|
- 数据流向:配置表 → Manager 初始化 → 运行时状态 → UI 显示
|
||||||
- 大量修改前先确认设计思路
|
|
||||||
|
### 新增功能的标准流程
|
||||||
|
1. 确定功能归属模块(参考下方模块索引)
|
||||||
|
2. 在对应模块目录下新增文件,遵循现有命名惯例
|
||||||
|
3. 如需跨模块交互,通过事件或 Manager 接口
|
||||||
|
4. 如需配置表支持,参考 `luban-config` 技能
|
||||||
|
5. 修改完成后需编译 DLL,参考 `compile-gameplay-dll` 技能
|
||||||
|
|
||||||
|
### 常见设计模式
|
||||||
|
- **Manager 单例**:全局系统管理(BuffManager、SkillManager、FightManager)
|
||||||
|
- **状态机**:角色状态、技能阶段、关卡流程
|
||||||
|
- **对象池**:子弹、特效、UI 列表项等频繁创建/销毁的对象
|
||||||
|
- **数据驱动**:通过 Luban 配置表定义行为参数,代码只实现逻辑框架
|
||||||
|
|
||||||
|
### 性能敏感区域
|
||||||
|
- `Update/LateUpdate` 中避免 GC 分配(无 foreach、无 LINQ、无字符串拼接)
|
||||||
|
- 战斗热路径(伤害计算、Buff 刷新)必须零 GC
|
||||||
|
- 集合操作使用预分配容量,复用临时 List
|
||||||
|
|
||||||
|
## 模块索引
|
||||||
|
|
||||||
|
| 模块 | 路径 | 职责 | 关键类 |
|
||||||
|
|------|------|------|--------|
|
||||||
|
| Buff | `GamePlay/Buff/` | Buff 添加/移除/叠加/属性 | BuffManager, BuffBase |
|
||||||
|
| Character | `GamePlay/Character/` | 角色单位、动画、状态 | UnitCharacter, CharacterManager |
|
||||||
|
| Fight | `GamePlay/Fight/` | 战斗核心、伤害、武器 | FightManager, DamageCalculator |
|
||||||
|
| Skill | `GamePlay/Skill/` | 技能释放/充能/状态机 | SkillManager, SkillBase |
|
||||||
|
| UI | `GamePlay/UI/` | 60+ UI 控制器 | UIBaseController, ShowManager |
|
||||||
|
| AI | `GamePlay/AI/` | AI 行为树/目标选择 | AIManager, AIAction |
|
||||||
|
| Level | `GamePlay/Level/` | 关卡管理/事件/引导 | LevelManager, LevelState |
|
||||||
|
| Net | `GamePlay/Net/` | 网络消息/Proto | NetManager, MsgHandler |
|
||||||
|
| Team | `GamePlay/Team/` | 队伍编辑/派遣/编队 | TeamManager |
|
||||||
|
|
||||||
|
## 技能引用
|
||||||
|
- 修改 GamePlay 代码后 → 读取 `compile-gameplay-dll` 技能
|
||||||
|
- 涉及配置表变更 → 读取 `luban-config` 技能
|
||||||
|
- 需要提交代码 → 读取 `batch-git-ops` 技能
|
||||||
|
- 性能优化相关 → 读取 `knowledge-base` 技能查看已完成的优化案例
|
||||||
|
|
|
||||||
|
|
@ -8,59 +8,39 @@ description: NLD 项目 UI 开发专用 Agent,专注 Unity UGUI Prefab 开发
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的 UI 开发专家,专注于 Unity UGUI Prefab 开发和 UI 控制器代码编写。
|
你是 NLD 游戏项目的 UI 开发专家,专注于 Unity UGUI Prefab 开发和 UI 控制器代码编写。
|
||||||
|
|
||||||
## 核心能力
|
> **操作层细节**(Prefab 提取方式、JSON 格式、组件属性格式等)见 `ui-prefab-dev` 技能,本 Agent 专注于决策和设计层。
|
||||||
|
|
||||||
### 1. Prefab 分析
|
## 设计决策原则
|
||||||
- 通过 Unity MCP 提取 Prefab JSON 结构
|
|
||||||
- 理解 UI 层级关系、组件类型和属性
|
|
||||||
- 分析 Prefab 与 Controller 代码的绑定关系
|
|
||||||
|
|
||||||
### 2. 代码生成
|
### 何时使用 AutoGen
|
||||||
- Controller 类继承 `UIBaseController`
|
- Prefab 中有 **5+ 个需要代码引用的组件** → 用 AutoGen 自动绑定
|
||||||
- 正确使用字段绑定 Prefab 中的组件
|
- 只有 1-2 个简单引用 → 手动绑定即可
|
||||||
- 区分手动代码和 AutoGen 自动生成代码
|
- AutoGen 文件命名: `UI_XXXController.AutoGen.cs`(不可手动修改)
|
||||||
- 为复杂界面编写 AutoGen 辅助类
|
|
||||||
|
|
||||||
### 3. UI 组件使用
|
### 何时使用对象池
|
||||||
- **RectTransform**: 锚点设置、布局计算
|
- 列表项数量 > 10 或会频繁刷新 → 必须用对象池
|
||||||
- **Image**: Sprite 切换、Icon 资源引用、填充动画
|
- 固定数量的静态 UI 元素 → 直接放在 Prefab 中
|
||||||
- **Text/TMP_Text**: 多语言文本、格式化显示
|
|
||||||
- **Button**: 点击事件、状态切换、长按
|
|
||||||
- **LayoutGroup**: 列表布局、动态子项
|
|
||||||
- **ScrollRect**: 滚动列表、无限滚动优化
|
|
||||||
|
|
||||||
### 4. UI 系统约定
|
### MVC 分层选择
|
||||||
- UI 代码位于 `Assets/Code/Scripts/GamePlay/UI/`
|
- **Controller**(`UI_XXXController`):只负责 UI 交互逻辑和显示刷新
|
||||||
- 使用 `DebugUtil` 进行日志输出
|
- **数据层**:通过 Manager 获取,Controller 不持有业务数据
|
||||||
- 使用 Odin Inspector 标签优化编辑器显示
|
- **视图层**:Prefab 定义布局,Controller 通过字段引用操控
|
||||||
- AutoGen 文件命名: `UI_XXXController.AutoGen.cs`
|
|
||||||
|
|
||||||
## 设计原则
|
### 界面生命周期
|
||||||
|
- 打开/关闭遵循 ShowManager 生命周期
|
||||||
- 界面和数据分离(MVC 模式)
|
- 弹窗通过 PopUpManager 管理
|
||||||
- 列表项复用(对象池)减少 Instantiate/Destroy
|
|
||||||
- 图片资源异步加载
|
|
||||||
- 多语言文本通过配置表获取
|
|
||||||
- 界面打开/关闭遵循 ShowManager 生命周期
|
|
||||||
|
|
||||||
## 常见 UI 模式
|
|
||||||
|
|
||||||
### 列表界面
|
|
||||||
```
|
|
||||||
- 使用 ScrollRect + ObjectPool 实现
|
|
||||||
- Item 模板 Prefab 独立存放
|
|
||||||
- 数据驱动刷新,避免全量重建
|
|
||||||
```
|
|
||||||
|
|
||||||
### 弹窗
|
|
||||||
```
|
|
||||||
- 继承 UIBaseController
|
|
||||||
- 通过 PopUpManager 管理显示/隐藏
|
|
||||||
- 支持遮罩点击关闭
|
- 支持遮罩点击关闭
|
||||||
```
|
- 进入/退出动画必须配对(DOTween)
|
||||||
|
|
||||||
### 动画
|
## 关键约定
|
||||||
```
|
|
||||||
- DOTween 实现 UI 动画
|
- UI 代码位于 `Assets/Code/Scripts/GamePlay/UI/`
|
||||||
- 进入/退出动画配对
|
- Controller 继承 `UIBaseController`
|
||||||
```
|
- 图片资源异步加载,不在主线程同步等待
|
||||||
|
- 多语言文本通过配置表获取,不在代码中硬编码字符串
|
||||||
|
- 列表使用 ScrollRect + 数据驱动刷新,避免全量重建
|
||||||
|
|
||||||
|
## 技能引用
|
||||||
|
- Prefab 结构分析和操作流程 → 读取 `ui-prefab-dev` 技能
|
||||||
|
- 配置表字段查询 → 读取 `luban-config` 技能
|
||||||
|
- 修改代码后编译 → 读取 `compile-gameplay-dll` 技能
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: batch-git-ops
|
name: batch-git-ops
|
||||||
description: Git operations for NLD project. This project has three git repos (NLDClient, NLDMisc, GamePlay) that must stay in sync. Use this skill for ANY git operation including git pull, git push, git commit, git checkout, git branch, git status, git stash, git fetch, git log, compile GamePlay DLL. All git operations in this project must consider all three repos to ensure alignment. Also triggers on compile DLL, build DLL, convert to DLL, GamePlay DLL, Unity MCP compile.
|
description: 三仓 Git 操作(NLDClient/NLDMisc/GamePlay)。触发关键词:git pull push commit checkout branch status stash fetch log、三仓同步、batch git。
|
||||||
---
|
---
|
||||||
|
|
||||||
# Batch Git Operations
|
# Batch Git Operations
|
||||||
|
|
@ -203,47 +203,13 @@ Present as grouped output per repo.
|
||||||
|
|
||||||
### 10. compile-gameplay-dll
|
### 10. compile-gameplay-dll
|
||||||
|
|
||||||
Compile GamePlay source code into `GamePlay_Dll/GamePlay.dll` via Unity.
|
> **详细编译流程见 `compile-gameplay-dll` 技能的 SKILL.md**,此处仅说明与 batch-commit 的集成逻辑。
|
||||||
|
|
||||||
This step is **automatically required** during `batch-commit` when GamePlay has code changes, but can also be invoked manually.
|
当 `batch-commit` 检测到 GamePlay 有 `.cs` 文件变更时:
|
||||||
|
|
||||||
**Prerequisites — ensure repos are up-to-date:**
|
1. **提交前**自动触发 `compile-gameplay-dll` 技能的编译流程
|
||||||
Before compiling, NLDClient and GamePlay MUST be on the latest code to avoid compile errors from version mismatch. Run the following first:
|
2. 编译成功后 NLDClient 也会有变更(更新的 DLL 文件),一并纳入提交
|
||||||
1. `git pull` in NLDClient repo (`../../`)
|
3. 编译失败 → 中止所有仓库的提交并报告错误
|
||||||
2. `git pull` in GamePlay repo (`Assets/Code/Scripts/GamePlay`)
|
|
||||||
3. Call `refresh_unity` via Unity MCP to let Unity pick up file changes:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="refresh_unity",
|
|
||||||
arguments={ "mode": "force", "scope": "all", "compile": "request", "wait_for_ready": true }
|
|
||||||
```
|
|
||||||
4. Check `read_console` for compilation errors. If errors exist, stop and report.
|
|
||||||
|
|
||||||
**Compile workflow:**
|
|
||||||
1. Call `execute_menu_item` via Unity MCP:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="execute_menu_item",
|
|
||||||
arguments={ "menu_path": "Tools/文件与路径/转换为Dll" }
|
|
||||||
```
|
|
||||||
2. Wait for compilation to complete — poll `editor_state` resource (`mcpforunity://editor/state`) and check the `isCompiling` field until it becomes `false`
|
|
||||||
3. Check `read_console` for errors:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="read_console",
|
|
||||||
arguments={ "action": "get", "types": ["error"], "count": "20" }
|
|
||||||
```
|
|
||||||
4. If errors exist, report them and do NOT proceed with commit
|
|
||||||
5. If successful, the updated `GamePlay.dll` will be in `Assets/Code/Scripts/GamePlay_Dll/` — this file belongs to the NLDClient repo
|
|
||||||
|
|
||||||
**Important:** After successful DLL compilation, both NLDClient (which contains the compiled DLL) and GamePlay (the source) need to be committed.
|
|
||||||
|
|
||||||
### Integration with batch-commit
|
|
||||||
|
|
||||||
When `batch-commit` detects GamePlay has changes (via `git status --porcelain`):
|
|
||||||
|
|
||||||
1. **Before committing**, check if GamePlay changes include `.cs` files
|
|
||||||
2. If yes, trigger the `compile-gameplay-dll` workflow above (including pulling latest for NLDClient and GamePlay)
|
|
||||||
3. After successful compilation, NLDClient will also have changes (the updated DLL file)
|
|
||||||
4. Include both repos in the commit
|
|
||||||
5. If compilation fails, abort the commit for all repos and report errors
|
|
||||||
|
|
||||||
## Safety Rules
|
## Safety Rules
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: compile-gameplay-dll
|
name: compile-gameplay-dll
|
||||||
description: 编译 GamePlay C# 源码为 GamePlay.dll。当修改 Assets/Code/Scripts/GamePlay/ 中的 .cs 文件后,需通过 Unity 菜单编译生成 DLL。触发关键词:编译 compile、GamePlay.dll、转换为Dll、build DLL、编译错误、Assembly Definition asmdef。
|
description: 编译 GamePlay C# 源码为 GamePlay.dll。触发关键词:编译 compile、GamePlay.dll、转换为Dll、build DLL、编译错误、Assembly Definition asmdef。
|
||||||
---
|
---
|
||||||
|
|
||||||
# Compile GamePlay DLL
|
# Compile GamePlay DLL
|
||||||
|
|
@ -9,53 +9,53 @@ description: 编译 GamePlay C# 源码为 GamePlay.dll。当修改 Assets/Code/S
|
||||||
|
|
||||||
## 前置知识
|
## 前置知识
|
||||||
|
|
||||||
- **源码位置**: `Assets/Code/Scripts/GamePlay/`(独立 Git 仓库,内含 75+ 功能模块目录)
|
- **源码位置**: `Assets/Code/Scripts/GamePlay/`(独立 Git 仓库)
|
||||||
- **产物位置**: `Assets/Code/Scripts/GamePlay_Dll/GamePlay.dll`
|
- **产物位置**: `Assets/Code/Scripts/GamePlay_Dll/GamePlay.dll`(属于 NLDClient 仓库)
|
||||||
- **编译方式**: 通过 Unity Editor 菜单触发(非命令行编译)
|
- **编译菜单**: `Tools/文件与路径/转换为Dll`(快捷键 F1)
|
||||||
- **Assembly Definition**: `Assets/Code/Scripts/GamePlay/GamePlay.asmdef`
|
- **Assembly Definition**: `Assets/Code/Scripts/GamePlay/GamePlay.asmdef`
|
||||||
|
|
||||||
## 工作流
|
## 编译流程
|
||||||
|
|
||||||
### 1. 确认变更范围
|
根据是否有 Unity MCP 可用,选择对应路径:
|
||||||
|
|
||||||
列出本次修改涉及的 GamePlay 文件:
|
### 路径 A:通过 Unity MCP 自动编译(优先)
|
||||||
|
|
||||||
```
|
**前置步骤** — 确保代码最新:
|
||||||
修改了 GamePlay 中的 .cs 文件列表:
|
1. `git pull` NLDClient 仓库(`../../`)
|
||||||
- Assets/Code/Scripts/GamePlay/Buff/BuffManager.cs
|
2. `git pull` GamePlay 仓库(`Assets/Code/Scripts/GamePlay`)
|
||||||
- Assets/Code/Scripts/GamePlay/Character/UnitCharacter.State.cs
|
3. 刷新 Unity:
|
||||||
...
|
```
|
||||||
```
|
CallMcpTool: server="user-unityMCP", toolName="refresh_unity",
|
||||||
|
arguments={ "mode": "force", "scope": "all", "compile": "request", "wait_for_ready": true }
|
||||||
|
```
|
||||||
|
4. 检查编译错误,有错误则停止。
|
||||||
|
|
||||||
### 2. 提示编译步骤
|
**执行编译**:
|
||||||
|
1. 调用菜单:
|
||||||
|
```
|
||||||
|
CallMcpTool: server="user-unityMCP", toolName="execute_menu_item",
|
||||||
|
arguments={ "menu_path": "Tools/文件与路径/转换为Dll" }
|
||||||
|
```
|
||||||
|
2. 等待编译完成 — 轮询 `editor_state`,检查 `isCompiling` 为 `false`。
|
||||||
|
3. 检查错误:
|
||||||
|
```
|
||||||
|
CallMcpTool: server="user-unityMCP", toolName="read_console",
|
||||||
|
arguments={ "action": "get", "types": ["error"], "count": "20" }
|
||||||
|
```
|
||||||
|
4. 有错误 → 报告并停止;无错误 → 编译成功。
|
||||||
|
|
||||||
AI 无法直接触发 Unity 菜单编译,需提示用户操作:
|
### 路径 B:提示用户手动编译(无 MCP 时)
|
||||||
|
|
||||||
> 请在 Unity Editor 中执行以下步骤编译 GamePlay DLL:
|
> 请在 Unity Editor 中执行:
|
||||||
> 1. 点击菜单 `Phxh/Build/Compile GamePlay DLL`(或项目配置的编译菜单路径)
|
> 1. 菜单 `Tools/文件与路径/转换为Dll`(或快捷键 F1)
|
||||||
> 2. 等待编译完成,确认 `GamePlay_Dll/GamePlay.dll` 已更新
|
> 2. 等待编译完成
|
||||||
> 3. 如有编译错误,将错误信息提供给 AI 进行修复
|
> 3. 如有编译错误,将错误信息提供给 AI 修复
|
||||||
|
|
||||||
### 3. 编译后检查
|
## 编译后处理
|
||||||
|
|
||||||
编译完成后确认:
|
- 确认 `GamePlay_Dll/GamePlay.dll` 文件时间戳已更新
|
||||||
- `GamePlay_Dll/GamePlay.dll` 文件时间戳已更新
|
- 编译成功后 NLDClient 仓库会有变更(更新的 DLL 文件)
|
||||||
- Unity Console 无编译错误
|
- 若需提交,走 `batch-git-ops` 流程(NLDClient + GamePlay 两个仓库)
|
||||||
- 若涉及三仓同步,需遵循 `batch-git-ops` 技能提交
|
|
||||||
|
|
||||||
## 关键模块速查
|
|
||||||
|
|
||||||
| 模块 | 路径 | 职责 |
|
|
||||||
|------|------|------|
|
|
||||||
| Buff | `GamePlay/Buff/` | Buff 系统(添加/移除/叠加/属性修改) |
|
|
||||||
| Character | `GamePlay/Character/` | 角色单位(动画/状态/属性/技能) |
|
|
||||||
| Fight | `GamePlay/Fight/` | 战斗核心(伤害/武器/浮字/录像) |
|
|
||||||
| Skill | `GamePlay/Skill/` | 技能系统(释放/充能/状态机) |
|
|
||||||
| UI | `GamePlay/UI/` | UI 控制器(60+ 界面控制器) |
|
|
||||||
| Level | `GamePlay/Level/` | 关卡管理(状态/事件/引导/路径) |
|
|
||||||
| AI | `GamePlay/AI/` | AI 系统(行为树/军团/目标选择) |
|
|
||||||
| Net | `GamePlay/Net/` | 网络消息(Proto/Actor/Client) |
|
|
||||||
| Team | `GamePlay/Team/` | 队伍管理(编辑/派遣/战斗编队) |
|
|
||||||
|
|
||||||
## 安全规则
|
## 安全规则
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,10 @@ description: Luban 配置表操作:生成代码、修改配置、校验数据
|
||||||
- **Luban 工具位置**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/`
|
- **Luban 工具位置**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/`
|
||||||
- **导出配置**: `Assets/PhxhSDK/Editor/Settings/Luban_*.asset`(Client_CN/Client_EN/Server)
|
- **导出配置**: `Assets/PhxhSDK/Editor/Settings/Luban_*.asset`(Client_CN/Client_EN/Server)
|
||||||
- **生成代码**: `Assets/Code/Scripts/GenCode/Luban/`(Luban 生成的 C# 代码)
|
- **生成代码**: `Assets/Code/Scripts/GenCode/Luban/`(Luban 生成的 C# 代码)
|
||||||
- **配置表源文件**: 通常为 Excel/CSV/XML,位于项目数据目录
|
- **配置表源文件**: 位于 NLDMisc 仓库(`../../../NLDMisc`),通常为 Excel 格式
|
||||||
|
- **NLDMisc 典型结构**: `NLDMisc/Data/` 下按功能模块分目录存放 Excel 文件
|
||||||
- **Editor 脚本**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/Editor/LubanExportConfig.cs`
|
- **Editor 脚本**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/Editor/LubanExportConfig.cs`
|
||||||
|
- **Root.xml 定义**: 在 NLDMisc 仓库中,注册所有表的字段和类型定义
|
||||||
|
|
||||||
## 配置表导出配置说明
|
## 配置表导出配置说明
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,20 @@ description: NLD 项目代码审查专用 Agent,专注 C# 代码质量、性
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的代码审查专家,专注于 C#/Unity 代码的质量、性能和架构审查。
|
你是 NLD 游戏项目的代码审查专家,专注于 C#/Unity 代码的质量、性能和架构审查。
|
||||||
|
|
||||||
|
## 知识库参照
|
||||||
|
|
||||||
|
审查时应参考 `knowledge-base` 技能中的已完成优化案例作为正面模式:
|
||||||
|
- `AI_Gen_Doc/Finish/P0-*` 系列 — Buff 系统零 GC 优化模式(复用 List、HashSet 替代 Contains、去除 lambda/ToArray)
|
||||||
|
- `AI_Gen_Doc/性能优化任务清单.md` — 待完成的优化点
|
||||||
|
|
||||||
|
## 严重度判断标准
|
||||||
|
|
||||||
|
| 严重度 | 判断标准 |
|
||||||
|
|--------|----------|
|
||||||
|
| **高** | 会导致崩溃/卡死/数据丢失,或在每帧热路径产生 GC,或内存泄漏 |
|
||||||
|
| **中** | 影响性能但不致崩溃,或违反架构分层,或缺少空引用保护 |
|
||||||
|
| **低** | 命名不规范、缺少缓存但不在热路径、代码风格问题 |
|
||||||
|
|
||||||
## 审查维度
|
## 审查维度
|
||||||
|
|
||||||
### 1. 性能
|
### 1. 性能
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,54 @@
|
||||||
---
|
---
|
||||||
name: default
|
name: default
|
||||||
description: NLD 项目默认 AI 编码助手
|
description: NLD 项目默认 AI 编码助手 — GamePlay 模块开发专家,擅长 Unity C# 游戏逻辑、Buff/战斗/技能/角色系统开发
|
||||||
---
|
---
|
||||||
|
|
||||||
# Default Agent
|
# Default Agent — GamePlay Developer
|
||||||
|
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的 AI 编码助手,擅长 Unity C# 开发、游戏逻辑实现和工具链开发。
|
你是 NLD 游戏项目的 GamePlay 开发专家,专注于 `Assets/Code/Scripts/GamePlay/` 下 75+ 功能模块的日常开发。
|
||||||
|
|
||||||
## 核心原则
|
## 核心决策原则
|
||||||
- 使用面向对象的设计思路
|
|
||||||
- 单个文件/模块尽可能小且功能单一
|
|
||||||
- 按要求去做,不扩展额外的功能
|
|
||||||
- 使用 Odin 工具开发编辑器
|
|
||||||
- 使用 DebugUtil 类进行日志和调试
|
|
||||||
|
|
||||||
## 行为约束
|
### 模块间依赖规则
|
||||||
- 不生成 Unity .meta 文件
|
- GamePlay 各模块通过 Manager 单例互相访问,禁止直接 new 其他模块的内部类
|
||||||
- 不主动编译项目
|
- 跨模块通信优先使用事件系统(EventManager),避免直接引用导致循环依赖
|
||||||
- 不做未经确认的 git 操作
|
- 数据流向:配置表 → Manager 初始化 → 运行时状态 → UI 显示
|
||||||
- 大量修改前先确认设计思路
|
|
||||||
|
### 新增功能的标准流程
|
||||||
|
1. 确定功能归属模块(参考下方模块索引)
|
||||||
|
2. 在对应模块目录下新增文件,遵循现有命名惯例
|
||||||
|
3. 如需跨模块交互,通过事件或 Manager 接口
|
||||||
|
4. 如需配置表支持,参考 `luban-config` 技能
|
||||||
|
5. 修改完成后需编译 DLL,参考 `compile-gameplay-dll` 技能
|
||||||
|
|
||||||
|
### 常见设计模式
|
||||||
|
- **Manager 单例**:全局系统管理(BuffManager、SkillManager、FightManager)
|
||||||
|
- **状态机**:角色状态、技能阶段、关卡流程
|
||||||
|
- **对象池**:子弹、特效、UI 列表项等频繁创建/销毁的对象
|
||||||
|
- **数据驱动**:通过 Luban 配置表定义行为参数,代码只实现逻辑框架
|
||||||
|
|
||||||
|
### 性能敏感区域
|
||||||
|
- `Update/LateUpdate` 中避免 GC 分配(无 foreach、无 LINQ、无字符串拼接)
|
||||||
|
- 战斗热路径(伤害计算、Buff 刷新)必须零 GC
|
||||||
|
- 集合操作使用预分配容量,复用临时 List
|
||||||
|
|
||||||
|
## 模块索引
|
||||||
|
|
||||||
|
| 模块 | 路径 | 职责 | 关键类 |
|
||||||
|
|------|------|------|--------|
|
||||||
|
| Buff | `GamePlay/Buff/` | Buff 添加/移除/叠加/属性 | BuffManager, BuffBase |
|
||||||
|
| Character | `GamePlay/Character/` | 角色单位、动画、状态 | UnitCharacter, CharacterManager |
|
||||||
|
| Fight | `GamePlay/Fight/` | 战斗核心、伤害、武器 | FightManager, DamageCalculator |
|
||||||
|
| Skill | `GamePlay/Skill/` | 技能释放/充能/状态机 | SkillManager, SkillBase |
|
||||||
|
| UI | `GamePlay/UI/` | 60+ UI 控制器 | UIBaseController, ShowManager |
|
||||||
|
| AI | `GamePlay/AI/` | AI 行为树/目标选择 | AIManager, AIAction |
|
||||||
|
| Level | `GamePlay/Level/` | 关卡管理/事件/引导 | LevelManager, LevelState |
|
||||||
|
| Net | `GamePlay/Net/` | 网络消息/Proto | NetManager, MsgHandler |
|
||||||
|
| Team | `GamePlay/Team/` | 队伍编辑/派遣/编队 | TeamManager |
|
||||||
|
|
||||||
|
## 技能引用
|
||||||
|
- 修改 GamePlay 代码后 → 读取 `compile-gameplay-dll` 技能
|
||||||
|
- 涉及配置表变更 → 读取 `luban-config` 技能
|
||||||
|
- 需要提交代码 → 读取 `batch-git-ops` 技能
|
||||||
|
- 性能优化相关 → 读取 `knowledge-base` 技能查看已完成的优化案例
|
||||||
|
|
|
||||||
|
|
@ -8,59 +8,39 @@ description: NLD 项目 UI 开发专用 Agent,专注 Unity UGUI Prefab 开发
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的 UI 开发专家,专注于 Unity UGUI Prefab 开发和 UI 控制器代码编写。
|
你是 NLD 游戏项目的 UI 开发专家,专注于 Unity UGUI Prefab 开发和 UI 控制器代码编写。
|
||||||
|
|
||||||
## 核心能力
|
> **操作层细节**(Prefab 提取方式、JSON 格式、组件属性格式等)见 `ui-prefab-dev` 技能,本 Agent 专注于决策和设计层。
|
||||||
|
|
||||||
### 1. Prefab 分析
|
## 设计决策原则
|
||||||
- 通过 Unity MCP 提取 Prefab JSON 结构
|
|
||||||
- 理解 UI 层级关系、组件类型和属性
|
|
||||||
- 分析 Prefab 与 Controller 代码的绑定关系
|
|
||||||
|
|
||||||
### 2. 代码生成
|
### 何时使用 AutoGen
|
||||||
- Controller 类继承 `UIBaseController`
|
- Prefab 中有 **5+ 个需要代码引用的组件** → 用 AutoGen 自动绑定
|
||||||
- 正确使用字段绑定 Prefab 中的组件
|
- 只有 1-2 个简单引用 → 手动绑定即可
|
||||||
- 区分手动代码和 AutoGen 自动生成代码
|
- AutoGen 文件命名: `UI_XXXController.AutoGen.cs`(不可手动修改)
|
||||||
- 为复杂界面编写 AutoGen 辅助类
|
|
||||||
|
|
||||||
### 3. UI 组件使用
|
### 何时使用对象池
|
||||||
- **RectTransform**: 锚点设置、布局计算
|
- 列表项数量 > 10 或会频繁刷新 → 必须用对象池
|
||||||
- **Image**: Sprite 切换、Icon 资源引用、填充动画
|
- 固定数量的静态 UI 元素 → 直接放在 Prefab 中
|
||||||
- **Text/TMP_Text**: 多语言文本、格式化显示
|
|
||||||
- **Button**: 点击事件、状态切换、长按
|
|
||||||
- **LayoutGroup**: 列表布局、动态子项
|
|
||||||
- **ScrollRect**: 滚动列表、无限滚动优化
|
|
||||||
|
|
||||||
### 4. UI 系统约定
|
### MVC 分层选择
|
||||||
- UI 代码位于 `Assets/Code/Scripts/GamePlay/UI/`
|
- **Controller**(`UI_XXXController`):只负责 UI 交互逻辑和显示刷新
|
||||||
- 使用 `DebugUtil` 进行日志输出
|
- **数据层**:通过 Manager 获取,Controller 不持有业务数据
|
||||||
- 使用 Odin Inspector 标签优化编辑器显示
|
- **视图层**:Prefab 定义布局,Controller 通过字段引用操控
|
||||||
- AutoGen 文件命名: `UI_XXXController.AutoGen.cs`
|
|
||||||
|
|
||||||
## 设计原则
|
### 界面生命周期
|
||||||
|
- 打开/关闭遵循 ShowManager 生命周期
|
||||||
- 界面和数据分离(MVC 模式)
|
- 弹窗通过 PopUpManager 管理
|
||||||
- 列表项复用(对象池)减少 Instantiate/Destroy
|
|
||||||
- 图片资源异步加载
|
|
||||||
- 多语言文本通过配置表获取
|
|
||||||
- 界面打开/关闭遵循 ShowManager 生命周期
|
|
||||||
|
|
||||||
## 常见 UI 模式
|
|
||||||
|
|
||||||
### 列表界面
|
|
||||||
```
|
|
||||||
- 使用 ScrollRect + ObjectPool 实现
|
|
||||||
- Item 模板 Prefab 独立存放
|
|
||||||
- 数据驱动刷新,避免全量重建
|
|
||||||
```
|
|
||||||
|
|
||||||
### 弹窗
|
|
||||||
```
|
|
||||||
- 继承 UIBaseController
|
|
||||||
- 通过 PopUpManager 管理显示/隐藏
|
|
||||||
- 支持遮罩点击关闭
|
- 支持遮罩点击关闭
|
||||||
```
|
- 进入/退出动画必须配对(DOTween)
|
||||||
|
|
||||||
### 动画
|
## 关键约定
|
||||||
```
|
|
||||||
- DOTween 实现 UI 动画
|
- UI 代码位于 `Assets/Code/Scripts/GamePlay/UI/`
|
||||||
- 进入/退出动画配对
|
- Controller 继承 `UIBaseController`
|
||||||
```
|
- 图片资源异步加载,不在主线程同步等待
|
||||||
|
- 多语言文本通过配置表获取,不在代码中硬编码字符串
|
||||||
|
- 列表使用 ScrollRect + 数据驱动刷新,避免全量重建
|
||||||
|
|
||||||
|
## 技能引用
|
||||||
|
- Prefab 结构分析和操作流程 → 读取 `ui-prefab-dev` 技能
|
||||||
|
- 配置表字段查询 → 读取 `luban-config` 技能
|
||||||
|
- 修改代码后编译 → 读取 `compile-gameplay-dll` 技能
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: batch-git-ops
|
name: batch-git-ops
|
||||||
description: Git operations for NLD project. This project has three git repos (NLDClient, NLDMisc, GamePlay) that must stay in sync. Use this skill for ANY git operation including git pull, git push, git commit, git checkout, git branch, git status, git stash, git fetch, git log, compile GamePlay DLL. All git operations in this project must consider all three repos to ensure alignment. Also triggers on compile DLL, build DLL, convert to DLL, GamePlay DLL, Unity MCP compile.
|
description: 三仓 Git 操作(NLDClient/NLDMisc/GamePlay)。触发关键词:git pull push commit checkout branch status stash fetch log、三仓同步、batch git。
|
||||||
---
|
---
|
||||||
|
|
||||||
# Batch Git Operations
|
# Batch Git Operations
|
||||||
|
|
@ -203,47 +203,13 @@ Present as grouped output per repo.
|
||||||
|
|
||||||
### 10. compile-gameplay-dll
|
### 10. compile-gameplay-dll
|
||||||
|
|
||||||
Compile GamePlay source code into `GamePlay_Dll/GamePlay.dll` via Unity.
|
> **详细编译流程见 `compile-gameplay-dll` 技能的 SKILL.md**,此处仅说明与 batch-commit 的集成逻辑。
|
||||||
|
|
||||||
This step is **automatically required** during `batch-commit` when GamePlay has code changes, but can also be invoked manually.
|
当 `batch-commit` 检测到 GamePlay 有 `.cs` 文件变更时:
|
||||||
|
|
||||||
**Prerequisites — ensure repos are up-to-date:**
|
1. **提交前**自动触发 `compile-gameplay-dll` 技能的编译流程
|
||||||
Before compiling, NLDClient and GamePlay MUST be on the latest code to avoid compile errors from version mismatch. Run the following first:
|
2. 编译成功后 NLDClient 也会有变更(更新的 DLL 文件),一并纳入提交
|
||||||
1. `git pull` in NLDClient repo (`../../`)
|
3. 编译失败 → 中止所有仓库的提交并报告错误
|
||||||
2. `git pull` in GamePlay repo (`Assets/Code/Scripts/GamePlay`)
|
|
||||||
3. Call `refresh_unity` via Unity MCP to let Unity pick up file changes:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="refresh_unity",
|
|
||||||
arguments={ "mode": "force", "scope": "all", "compile": "request", "wait_for_ready": true }
|
|
||||||
```
|
|
||||||
4. Check `read_console` for compilation errors. If errors exist, stop and report.
|
|
||||||
|
|
||||||
**Compile workflow:**
|
|
||||||
1. Call `execute_menu_item` via Unity MCP:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="execute_menu_item",
|
|
||||||
arguments={ "menu_path": "Tools/文件与路径/转换为Dll" }
|
|
||||||
```
|
|
||||||
2. Wait for compilation to complete — poll `editor_state` resource (`mcpforunity://editor/state`) and check the `isCompiling` field until it becomes `false`
|
|
||||||
3. Check `read_console` for errors:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="read_console",
|
|
||||||
arguments={ "action": "get", "types": ["error"], "count": "20" }
|
|
||||||
```
|
|
||||||
4. If errors exist, report them and do NOT proceed with commit
|
|
||||||
5. If successful, the updated `GamePlay.dll` will be in `Assets/Code/Scripts/GamePlay_Dll/` — this file belongs to the NLDClient repo
|
|
||||||
|
|
||||||
**Important:** After successful DLL compilation, both NLDClient (which contains the compiled DLL) and GamePlay (the source) need to be committed.
|
|
||||||
|
|
||||||
### Integration with batch-commit
|
|
||||||
|
|
||||||
When `batch-commit` detects GamePlay has changes (via `git status --porcelain`):
|
|
||||||
|
|
||||||
1. **Before committing**, check if GamePlay changes include `.cs` files
|
|
||||||
2. If yes, trigger the `compile-gameplay-dll` workflow above (including pulling latest for NLDClient and GamePlay)
|
|
||||||
3. After successful compilation, NLDClient will also have changes (the updated DLL file)
|
|
||||||
4. Include both repos in the commit
|
|
||||||
5. If compilation fails, abort the commit for all repos and report errors
|
|
||||||
|
|
||||||
## Safety Rules
|
## Safety Rules
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: compile-gameplay-dll
|
name: compile-gameplay-dll
|
||||||
description: 编译 GamePlay C# 源码为 GamePlay.dll。当修改 Assets/Code/Scripts/GamePlay/ 中的 .cs 文件后,需通过 Unity 菜单编译生成 DLL。触发关键词:编译 compile、GamePlay.dll、转换为Dll、build DLL、编译错误、Assembly Definition asmdef。
|
description: 编译 GamePlay C# 源码为 GamePlay.dll。触发关键词:编译 compile、GamePlay.dll、转换为Dll、build DLL、编译错误、Assembly Definition asmdef。
|
||||||
---
|
---
|
||||||
|
|
||||||
# Compile GamePlay DLL
|
# Compile GamePlay DLL
|
||||||
|
|
@ -9,53 +9,53 @@ description: 编译 GamePlay C# 源码为 GamePlay.dll。当修改 Assets/Code/S
|
||||||
|
|
||||||
## 前置知识
|
## 前置知识
|
||||||
|
|
||||||
- **源码位置**: `Assets/Code/Scripts/GamePlay/`(独立 Git 仓库,内含 75+ 功能模块目录)
|
- **源码位置**: `Assets/Code/Scripts/GamePlay/`(独立 Git 仓库)
|
||||||
- **产物位置**: `Assets/Code/Scripts/GamePlay_Dll/GamePlay.dll`
|
- **产物位置**: `Assets/Code/Scripts/GamePlay_Dll/GamePlay.dll`(属于 NLDClient 仓库)
|
||||||
- **编译方式**: 通过 Unity Editor 菜单触发(非命令行编译)
|
- **编译菜单**: `Tools/文件与路径/转换为Dll`(快捷键 F1)
|
||||||
- **Assembly Definition**: `Assets/Code/Scripts/GamePlay/GamePlay.asmdef`
|
- **Assembly Definition**: `Assets/Code/Scripts/GamePlay/GamePlay.asmdef`
|
||||||
|
|
||||||
## 工作流
|
## 编译流程
|
||||||
|
|
||||||
### 1. 确认变更范围
|
根据是否有 Unity MCP 可用,选择对应路径:
|
||||||
|
|
||||||
列出本次修改涉及的 GamePlay 文件:
|
### 路径 A:通过 Unity MCP 自动编译(优先)
|
||||||
|
|
||||||
```
|
**前置步骤** — 确保代码最新:
|
||||||
修改了 GamePlay 中的 .cs 文件列表:
|
1. `git pull` NLDClient 仓库(`../../`)
|
||||||
- Assets/Code/Scripts/GamePlay/Buff/BuffManager.cs
|
2. `git pull` GamePlay 仓库(`Assets/Code/Scripts/GamePlay`)
|
||||||
- Assets/Code/Scripts/GamePlay/Character/UnitCharacter.State.cs
|
3. 刷新 Unity:
|
||||||
...
|
```
|
||||||
```
|
CallMcpTool: server="user-unityMCP", toolName="refresh_unity",
|
||||||
|
arguments={ "mode": "force", "scope": "all", "compile": "request", "wait_for_ready": true }
|
||||||
|
```
|
||||||
|
4. 检查编译错误,有错误则停止。
|
||||||
|
|
||||||
### 2. 提示编译步骤
|
**执行编译**:
|
||||||
|
1. 调用菜单:
|
||||||
|
```
|
||||||
|
CallMcpTool: server="user-unityMCP", toolName="execute_menu_item",
|
||||||
|
arguments={ "menu_path": "Tools/文件与路径/转换为Dll" }
|
||||||
|
```
|
||||||
|
2. 等待编译完成 — 轮询 `editor_state`,检查 `isCompiling` 为 `false`。
|
||||||
|
3. 检查错误:
|
||||||
|
```
|
||||||
|
CallMcpTool: server="user-unityMCP", toolName="read_console",
|
||||||
|
arguments={ "action": "get", "types": ["error"], "count": "20" }
|
||||||
|
```
|
||||||
|
4. 有错误 → 报告并停止;无错误 → 编译成功。
|
||||||
|
|
||||||
AI 无法直接触发 Unity 菜单编译,需提示用户操作:
|
### 路径 B:提示用户手动编译(无 MCP 时)
|
||||||
|
|
||||||
> 请在 Unity Editor 中执行以下步骤编译 GamePlay DLL:
|
> 请在 Unity Editor 中执行:
|
||||||
> 1. 点击菜单 `Phxh/Build/Compile GamePlay DLL`(或项目配置的编译菜单路径)
|
> 1. 菜单 `Tools/文件与路径/转换为Dll`(或快捷键 F1)
|
||||||
> 2. 等待编译完成,确认 `GamePlay_Dll/GamePlay.dll` 已更新
|
> 2. 等待编译完成
|
||||||
> 3. 如有编译错误,将错误信息提供给 AI 进行修复
|
> 3. 如有编译错误,将错误信息提供给 AI 修复
|
||||||
|
|
||||||
### 3. 编译后检查
|
## 编译后处理
|
||||||
|
|
||||||
编译完成后确认:
|
- 确认 `GamePlay_Dll/GamePlay.dll` 文件时间戳已更新
|
||||||
- `GamePlay_Dll/GamePlay.dll` 文件时间戳已更新
|
- 编译成功后 NLDClient 仓库会有变更(更新的 DLL 文件)
|
||||||
- Unity Console 无编译错误
|
- 若需提交,走 `batch-git-ops` 流程(NLDClient + GamePlay 两个仓库)
|
||||||
- 若涉及三仓同步,需遵循 `batch-git-ops` 技能提交
|
|
||||||
|
|
||||||
## 关键模块速查
|
|
||||||
|
|
||||||
| 模块 | 路径 | 职责 |
|
|
||||||
|------|------|------|
|
|
||||||
| Buff | `GamePlay/Buff/` | Buff 系统(添加/移除/叠加/属性修改) |
|
|
||||||
| Character | `GamePlay/Character/` | 角色单位(动画/状态/属性/技能) |
|
|
||||||
| Fight | `GamePlay/Fight/` | 战斗核心(伤害/武器/浮字/录像) |
|
|
||||||
| Skill | `GamePlay/Skill/` | 技能系统(释放/充能/状态机) |
|
|
||||||
| UI | `GamePlay/UI/` | UI 控制器(60+ 界面控制器) |
|
|
||||||
| Level | `GamePlay/Level/` | 关卡管理(状态/事件/引导/路径) |
|
|
||||||
| AI | `GamePlay/AI/` | AI 系统(行为树/军团/目标选择) |
|
|
||||||
| Net | `GamePlay/Net/` | 网络消息(Proto/Actor/Client) |
|
|
||||||
| Team | `GamePlay/Team/` | 队伍管理(编辑/派遣/战斗编队) |
|
|
||||||
|
|
||||||
## 安全规则
|
## 安全规则
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,10 @@ description: Luban 配置表操作:生成代码、修改配置、校验数据
|
||||||
- **Luban 工具位置**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/`
|
- **Luban 工具位置**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/`
|
||||||
- **导出配置**: `Assets/PhxhSDK/Editor/Settings/Luban_*.asset`(Client_CN/Client_EN/Server)
|
- **导出配置**: `Assets/PhxhSDK/Editor/Settings/Luban_*.asset`(Client_CN/Client_EN/Server)
|
||||||
- **生成代码**: `Assets/Code/Scripts/GenCode/Luban/`(Luban 生成的 C# 代码)
|
- **生成代码**: `Assets/Code/Scripts/GenCode/Luban/`(Luban 生成的 C# 代码)
|
||||||
- **配置表源文件**: 通常为 Excel/CSV/XML,位于项目数据目录
|
- **配置表源文件**: 位于 NLDMisc 仓库(`../../../NLDMisc`),通常为 Excel 格式
|
||||||
|
- **NLDMisc 典型结构**: `NLDMisc/Data/` 下按功能模块分目录存放 Excel 文件
|
||||||
- **Editor 脚本**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/Editor/LubanExportConfig.cs`
|
- **Editor 脚本**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/Editor/LubanExportConfig.cs`
|
||||||
|
- **Root.xml 定义**: 在 NLDMisc 仓库中,注册所有表的字段和类型定义
|
||||||
|
|
||||||
## 配置表导出配置说明
|
## 配置表导出配置说明
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,20 @@ description: NLD 项目代码审查专用 Agent,专注 C# 代码质量、性
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的代码审查专家,专注于 C#/Unity 代码的质量、性能和架构审查。
|
你是 NLD 游戏项目的代码审查专家,专注于 C#/Unity 代码的质量、性能和架构审查。
|
||||||
|
|
||||||
|
## 知识库参照
|
||||||
|
|
||||||
|
审查时应参考 `knowledge-base` 技能中的已完成优化案例作为正面模式:
|
||||||
|
- `AI_Gen_Doc/Finish/P0-*` 系列 — Buff 系统零 GC 优化模式(复用 List、HashSet 替代 Contains、去除 lambda/ToArray)
|
||||||
|
- `AI_Gen_Doc/性能优化任务清单.md` — 待完成的优化点
|
||||||
|
|
||||||
|
## 严重度判断标准
|
||||||
|
|
||||||
|
| 严重度 | 判断标准 |
|
||||||
|
|--------|----------|
|
||||||
|
| **高** | 会导致崩溃/卡死/数据丢失,或在每帧热路径产生 GC,或内存泄漏 |
|
||||||
|
| **中** | 影响性能但不致崩溃,或违反架构分层,或缺少空引用保护 |
|
||||||
|
| **低** | 命名不规范、缺少缓存但不在热路径、代码风格问题 |
|
||||||
|
|
||||||
## 审查维度
|
## 审查维度
|
||||||
|
|
||||||
### 1. 性能
|
### 1. 性能
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,54 @@
|
||||||
---
|
---
|
||||||
name: default
|
name: default
|
||||||
description: NLD 项目默认 AI 编码助手
|
description: NLD 项目默认 AI 编码助手 — GamePlay 模块开发专家,擅长 Unity C# 游戏逻辑、Buff/战斗/技能/角色系统开发
|
||||||
---
|
---
|
||||||
|
|
||||||
# Default Agent
|
# Default Agent — GamePlay Developer
|
||||||
|
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的 AI 编码助手,擅长 Unity C# 开发、游戏逻辑实现和工具链开发。
|
你是 NLD 游戏项目的 GamePlay 开发专家,专注于 `Assets/Code/Scripts/GamePlay/` 下 75+ 功能模块的日常开发。
|
||||||
|
|
||||||
## 核心原则
|
## 核心决策原则
|
||||||
- 使用面向对象的设计思路
|
|
||||||
- 单个文件/模块尽可能小且功能单一
|
|
||||||
- 按要求去做,不扩展额外的功能
|
|
||||||
- 使用 Odin 工具开发编辑器
|
|
||||||
- 使用 DebugUtil 类进行日志和调试
|
|
||||||
|
|
||||||
## 行为约束
|
### 模块间依赖规则
|
||||||
- 不生成 Unity .meta 文件
|
- GamePlay 各模块通过 Manager 单例互相访问,禁止直接 new 其他模块的内部类
|
||||||
- 不主动编译项目
|
- 跨模块通信优先使用事件系统(EventManager),避免直接引用导致循环依赖
|
||||||
- 不做未经确认的 git 操作
|
- 数据流向:配置表 → Manager 初始化 → 运行时状态 → UI 显示
|
||||||
- 大量修改前先确认设计思路
|
|
||||||
|
### 新增功能的标准流程
|
||||||
|
1. 确定功能归属模块(参考下方模块索引)
|
||||||
|
2. 在对应模块目录下新增文件,遵循现有命名惯例
|
||||||
|
3. 如需跨模块交互,通过事件或 Manager 接口
|
||||||
|
4. 如需配置表支持,参考 `luban-config` 技能
|
||||||
|
5. 修改完成后需编译 DLL,参考 `compile-gameplay-dll` 技能
|
||||||
|
|
||||||
|
### 常见设计模式
|
||||||
|
- **Manager 单例**:全局系统管理(BuffManager、SkillManager、FightManager)
|
||||||
|
- **状态机**:角色状态、技能阶段、关卡流程
|
||||||
|
- **对象池**:子弹、特效、UI 列表项等频繁创建/销毁的对象
|
||||||
|
- **数据驱动**:通过 Luban 配置表定义行为参数,代码只实现逻辑框架
|
||||||
|
|
||||||
|
### 性能敏感区域
|
||||||
|
- `Update/LateUpdate` 中避免 GC 分配(无 foreach、无 LINQ、无字符串拼接)
|
||||||
|
- 战斗热路径(伤害计算、Buff 刷新)必须零 GC
|
||||||
|
- 集合操作使用预分配容量,复用临时 List
|
||||||
|
|
||||||
|
## 模块索引
|
||||||
|
|
||||||
|
| 模块 | 路径 | 职责 | 关键类 |
|
||||||
|
|------|------|------|--------|
|
||||||
|
| Buff | `GamePlay/Buff/` | Buff 添加/移除/叠加/属性 | BuffManager, BuffBase |
|
||||||
|
| Character | `GamePlay/Character/` | 角色单位、动画、状态 | UnitCharacter, CharacterManager |
|
||||||
|
| Fight | `GamePlay/Fight/` | 战斗核心、伤害、武器 | FightManager, DamageCalculator |
|
||||||
|
| Skill | `GamePlay/Skill/` | 技能释放/充能/状态机 | SkillManager, SkillBase |
|
||||||
|
| UI | `GamePlay/UI/` | 60+ UI 控制器 | UIBaseController, ShowManager |
|
||||||
|
| AI | `GamePlay/AI/` | AI 行为树/目标选择 | AIManager, AIAction |
|
||||||
|
| Level | `GamePlay/Level/` | 关卡管理/事件/引导 | LevelManager, LevelState |
|
||||||
|
| Net | `GamePlay/Net/` | 网络消息/Proto | NetManager, MsgHandler |
|
||||||
|
| Team | `GamePlay/Team/` | 队伍编辑/派遣/编队 | TeamManager |
|
||||||
|
|
||||||
|
## 技能引用
|
||||||
|
- 修改 GamePlay 代码后 → 读取 `compile-gameplay-dll` 技能
|
||||||
|
- 涉及配置表变更 → 读取 `luban-config` 技能
|
||||||
|
- 需要提交代码 → 读取 `batch-git-ops` 技能
|
||||||
|
- 性能优化相关 → 读取 `knowledge-base` 技能查看已完成的优化案例
|
||||||
|
|
|
||||||
|
|
@ -8,59 +8,39 @@ description: NLD 项目 UI 开发专用 Agent,专注 Unity UGUI Prefab 开发
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的 UI 开发专家,专注于 Unity UGUI Prefab 开发和 UI 控制器代码编写。
|
你是 NLD 游戏项目的 UI 开发专家,专注于 Unity UGUI Prefab 开发和 UI 控制器代码编写。
|
||||||
|
|
||||||
## 核心能力
|
> **操作层细节**(Prefab 提取方式、JSON 格式、组件属性格式等)见 `ui-prefab-dev` 技能,本 Agent 专注于决策和设计层。
|
||||||
|
|
||||||
### 1. Prefab 分析
|
## 设计决策原则
|
||||||
- 通过 Unity MCP 提取 Prefab JSON 结构
|
|
||||||
- 理解 UI 层级关系、组件类型和属性
|
|
||||||
- 分析 Prefab 与 Controller 代码的绑定关系
|
|
||||||
|
|
||||||
### 2. 代码生成
|
### 何时使用 AutoGen
|
||||||
- Controller 类继承 `UIBaseController`
|
- Prefab 中有 **5+ 个需要代码引用的组件** → 用 AutoGen 自动绑定
|
||||||
- 正确使用字段绑定 Prefab 中的组件
|
- 只有 1-2 个简单引用 → 手动绑定即可
|
||||||
- 区分手动代码和 AutoGen 自动生成代码
|
- AutoGen 文件命名: `UI_XXXController.AutoGen.cs`(不可手动修改)
|
||||||
- 为复杂界面编写 AutoGen 辅助类
|
|
||||||
|
|
||||||
### 3. UI 组件使用
|
### 何时使用对象池
|
||||||
- **RectTransform**: 锚点设置、布局计算
|
- 列表项数量 > 10 或会频繁刷新 → 必须用对象池
|
||||||
- **Image**: Sprite 切换、Icon 资源引用、填充动画
|
- 固定数量的静态 UI 元素 → 直接放在 Prefab 中
|
||||||
- **Text/TMP_Text**: 多语言文本、格式化显示
|
|
||||||
- **Button**: 点击事件、状态切换、长按
|
|
||||||
- **LayoutGroup**: 列表布局、动态子项
|
|
||||||
- **ScrollRect**: 滚动列表、无限滚动优化
|
|
||||||
|
|
||||||
### 4. UI 系统约定
|
### MVC 分层选择
|
||||||
- UI 代码位于 `Assets/Code/Scripts/GamePlay/UI/`
|
- **Controller**(`UI_XXXController`):只负责 UI 交互逻辑和显示刷新
|
||||||
- 使用 `DebugUtil` 进行日志输出
|
- **数据层**:通过 Manager 获取,Controller 不持有业务数据
|
||||||
- 使用 Odin Inspector 标签优化编辑器显示
|
- **视图层**:Prefab 定义布局,Controller 通过字段引用操控
|
||||||
- AutoGen 文件命名: `UI_XXXController.AutoGen.cs`
|
|
||||||
|
|
||||||
## 设计原则
|
### 界面生命周期
|
||||||
|
- 打开/关闭遵循 ShowManager 生命周期
|
||||||
- 界面和数据分离(MVC 模式)
|
- 弹窗通过 PopUpManager 管理
|
||||||
- 列表项复用(对象池)减少 Instantiate/Destroy
|
|
||||||
- 图片资源异步加载
|
|
||||||
- 多语言文本通过配置表获取
|
|
||||||
- 界面打开/关闭遵循 ShowManager 生命周期
|
|
||||||
|
|
||||||
## 常见 UI 模式
|
|
||||||
|
|
||||||
### 列表界面
|
|
||||||
```
|
|
||||||
- 使用 ScrollRect + ObjectPool 实现
|
|
||||||
- Item 模板 Prefab 独立存放
|
|
||||||
- 数据驱动刷新,避免全量重建
|
|
||||||
```
|
|
||||||
|
|
||||||
### 弹窗
|
|
||||||
```
|
|
||||||
- 继承 UIBaseController
|
|
||||||
- 通过 PopUpManager 管理显示/隐藏
|
|
||||||
- 支持遮罩点击关闭
|
- 支持遮罩点击关闭
|
||||||
```
|
- 进入/退出动画必须配对(DOTween)
|
||||||
|
|
||||||
### 动画
|
## 关键约定
|
||||||
```
|
|
||||||
- DOTween 实现 UI 动画
|
- UI 代码位于 `Assets/Code/Scripts/GamePlay/UI/`
|
||||||
- 进入/退出动画配对
|
- Controller 继承 `UIBaseController`
|
||||||
```
|
- 图片资源异步加载,不在主线程同步等待
|
||||||
|
- 多语言文本通过配置表获取,不在代码中硬编码字符串
|
||||||
|
- 列表使用 ScrollRect + 数据驱动刷新,避免全量重建
|
||||||
|
|
||||||
|
## 技能引用
|
||||||
|
- Prefab 结构分析和操作流程 → 读取 `ui-prefab-dev` 技能
|
||||||
|
- 配置表字段查询 → 读取 `luban-config` 技能
|
||||||
|
- 修改代码后编译 → 读取 `compile-gameplay-dll` 技能
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: batch-git-ops
|
name: batch-git-ops
|
||||||
description: Git operations for NLD project. This project has three git repos (NLDClient, NLDMisc, GamePlay) that must stay in sync. Use this skill for ANY git operation including git pull, git push, git commit, git checkout, git branch, git status, git stash, git fetch, git log, compile GamePlay DLL. All git operations in this project must consider all three repos to ensure alignment. Also triggers on compile DLL, build DLL, convert to DLL, GamePlay DLL, Unity MCP compile.
|
description: 三仓 Git 操作(NLDClient/NLDMisc/GamePlay)。触发关键词:git pull push commit checkout branch status stash fetch log、三仓同步、batch git。
|
||||||
---
|
---
|
||||||
|
|
||||||
# Batch Git Operations
|
# Batch Git Operations
|
||||||
|
|
@ -203,47 +203,13 @@ Present as grouped output per repo.
|
||||||
|
|
||||||
### 10. compile-gameplay-dll
|
### 10. compile-gameplay-dll
|
||||||
|
|
||||||
Compile GamePlay source code into `GamePlay_Dll/GamePlay.dll` via Unity.
|
> **详细编译流程见 `compile-gameplay-dll` 技能的 SKILL.md**,此处仅说明与 batch-commit 的集成逻辑。
|
||||||
|
|
||||||
This step is **automatically required** during `batch-commit` when GamePlay has code changes, but can also be invoked manually.
|
当 `batch-commit` 检测到 GamePlay 有 `.cs` 文件变更时:
|
||||||
|
|
||||||
**Prerequisites — ensure repos are up-to-date:**
|
1. **提交前**自动触发 `compile-gameplay-dll` 技能的编译流程
|
||||||
Before compiling, NLDClient and GamePlay MUST be on the latest code to avoid compile errors from version mismatch. Run the following first:
|
2. 编译成功后 NLDClient 也会有变更(更新的 DLL 文件),一并纳入提交
|
||||||
1. `git pull` in NLDClient repo (`../../`)
|
3. 编译失败 → 中止所有仓库的提交并报告错误
|
||||||
2. `git pull` in GamePlay repo (`Assets/Code/Scripts/GamePlay`)
|
|
||||||
3. Call `refresh_unity` via Unity MCP to let Unity pick up file changes:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="refresh_unity",
|
|
||||||
arguments={ "mode": "force", "scope": "all", "compile": "request", "wait_for_ready": true }
|
|
||||||
```
|
|
||||||
4. Check `read_console` for compilation errors. If errors exist, stop and report.
|
|
||||||
|
|
||||||
**Compile workflow:**
|
|
||||||
1. Call `execute_menu_item` via Unity MCP:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="execute_menu_item",
|
|
||||||
arguments={ "menu_path": "Tools/文件与路径/转换为Dll" }
|
|
||||||
```
|
|
||||||
2. Wait for compilation to complete — poll `editor_state` resource (`mcpforunity://editor/state`) and check the `isCompiling` field until it becomes `false`
|
|
||||||
3. Check `read_console` for errors:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="read_console",
|
|
||||||
arguments={ "action": "get", "types": ["error"], "count": "20" }
|
|
||||||
```
|
|
||||||
4. If errors exist, report them and do NOT proceed with commit
|
|
||||||
5. If successful, the updated `GamePlay.dll` will be in `Assets/Code/Scripts/GamePlay_Dll/` — this file belongs to the NLDClient repo
|
|
||||||
|
|
||||||
**Important:** After successful DLL compilation, both NLDClient (which contains the compiled DLL) and GamePlay (the source) need to be committed.
|
|
||||||
|
|
||||||
### Integration with batch-commit
|
|
||||||
|
|
||||||
When `batch-commit` detects GamePlay has changes (via `git status --porcelain`):
|
|
||||||
|
|
||||||
1. **Before committing**, check if GamePlay changes include `.cs` files
|
|
||||||
2. If yes, trigger the `compile-gameplay-dll` workflow above (including pulling latest for NLDClient and GamePlay)
|
|
||||||
3. After successful compilation, NLDClient will also have changes (the updated DLL file)
|
|
||||||
4. Include both repos in the commit
|
|
||||||
5. If compilation fails, abort the commit for all repos and report errors
|
|
||||||
|
|
||||||
## Safety Rules
|
## Safety Rules
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: compile-gameplay-dll
|
name: compile-gameplay-dll
|
||||||
description: 编译 GamePlay C# 源码为 GamePlay.dll。当修改 Assets/Code/Scripts/GamePlay/ 中的 .cs 文件后,需通过 Unity 菜单编译生成 DLL。触发关键词:编译 compile、GamePlay.dll、转换为Dll、build DLL、编译错误、Assembly Definition asmdef。
|
description: 编译 GamePlay C# 源码为 GamePlay.dll。触发关键词:编译 compile、GamePlay.dll、转换为Dll、build DLL、编译错误、Assembly Definition asmdef。
|
||||||
---
|
---
|
||||||
|
|
||||||
# Compile GamePlay DLL
|
# Compile GamePlay DLL
|
||||||
|
|
@ -9,53 +9,53 @@ description: 编译 GamePlay C# 源码为 GamePlay.dll。当修改 Assets/Code/S
|
||||||
|
|
||||||
## 前置知识
|
## 前置知识
|
||||||
|
|
||||||
- **源码位置**: `Assets/Code/Scripts/GamePlay/`(独立 Git 仓库,内含 75+ 功能模块目录)
|
- **源码位置**: `Assets/Code/Scripts/GamePlay/`(独立 Git 仓库)
|
||||||
- **产物位置**: `Assets/Code/Scripts/GamePlay_Dll/GamePlay.dll`
|
- **产物位置**: `Assets/Code/Scripts/GamePlay_Dll/GamePlay.dll`(属于 NLDClient 仓库)
|
||||||
- **编译方式**: 通过 Unity Editor 菜单触发(非命令行编译)
|
- **编译菜单**: `Tools/文件与路径/转换为Dll`(快捷键 F1)
|
||||||
- **Assembly Definition**: `Assets/Code/Scripts/GamePlay/GamePlay.asmdef`
|
- **Assembly Definition**: `Assets/Code/Scripts/GamePlay/GamePlay.asmdef`
|
||||||
|
|
||||||
## 工作流
|
## 编译流程
|
||||||
|
|
||||||
### 1. 确认变更范围
|
根据是否有 Unity MCP 可用,选择对应路径:
|
||||||
|
|
||||||
列出本次修改涉及的 GamePlay 文件:
|
### 路径 A:通过 Unity MCP 自动编译(优先)
|
||||||
|
|
||||||
```
|
**前置步骤** — 确保代码最新:
|
||||||
修改了 GamePlay 中的 .cs 文件列表:
|
1. `git pull` NLDClient 仓库(`../../`)
|
||||||
- Assets/Code/Scripts/GamePlay/Buff/BuffManager.cs
|
2. `git pull` GamePlay 仓库(`Assets/Code/Scripts/GamePlay`)
|
||||||
- Assets/Code/Scripts/GamePlay/Character/UnitCharacter.State.cs
|
3. 刷新 Unity:
|
||||||
...
|
```
|
||||||
```
|
CallMcpTool: server="user-unityMCP", toolName="refresh_unity",
|
||||||
|
arguments={ "mode": "force", "scope": "all", "compile": "request", "wait_for_ready": true }
|
||||||
|
```
|
||||||
|
4. 检查编译错误,有错误则停止。
|
||||||
|
|
||||||
### 2. 提示编译步骤
|
**执行编译**:
|
||||||
|
1. 调用菜单:
|
||||||
|
```
|
||||||
|
CallMcpTool: server="user-unityMCP", toolName="execute_menu_item",
|
||||||
|
arguments={ "menu_path": "Tools/文件与路径/转换为Dll" }
|
||||||
|
```
|
||||||
|
2. 等待编译完成 — 轮询 `editor_state`,检查 `isCompiling` 为 `false`。
|
||||||
|
3. 检查错误:
|
||||||
|
```
|
||||||
|
CallMcpTool: server="user-unityMCP", toolName="read_console",
|
||||||
|
arguments={ "action": "get", "types": ["error"], "count": "20" }
|
||||||
|
```
|
||||||
|
4. 有错误 → 报告并停止;无错误 → 编译成功。
|
||||||
|
|
||||||
AI 无法直接触发 Unity 菜单编译,需提示用户操作:
|
### 路径 B:提示用户手动编译(无 MCP 时)
|
||||||
|
|
||||||
> 请在 Unity Editor 中执行以下步骤编译 GamePlay DLL:
|
> 请在 Unity Editor 中执行:
|
||||||
> 1. 点击菜单 `Phxh/Build/Compile GamePlay DLL`(或项目配置的编译菜单路径)
|
> 1. 菜单 `Tools/文件与路径/转换为Dll`(或快捷键 F1)
|
||||||
> 2. 等待编译完成,确认 `GamePlay_Dll/GamePlay.dll` 已更新
|
> 2. 等待编译完成
|
||||||
> 3. 如有编译错误,将错误信息提供给 AI 进行修复
|
> 3. 如有编译错误,将错误信息提供给 AI 修复
|
||||||
|
|
||||||
### 3. 编译后检查
|
## 编译后处理
|
||||||
|
|
||||||
编译完成后确认:
|
- 确认 `GamePlay_Dll/GamePlay.dll` 文件时间戳已更新
|
||||||
- `GamePlay_Dll/GamePlay.dll` 文件时间戳已更新
|
- 编译成功后 NLDClient 仓库会有变更(更新的 DLL 文件)
|
||||||
- Unity Console 无编译错误
|
- 若需提交,走 `batch-git-ops` 流程(NLDClient + GamePlay 两个仓库)
|
||||||
- 若涉及三仓同步,需遵循 `batch-git-ops` 技能提交
|
|
||||||
|
|
||||||
## 关键模块速查
|
|
||||||
|
|
||||||
| 模块 | 路径 | 职责 |
|
|
||||||
|------|------|------|
|
|
||||||
| Buff | `GamePlay/Buff/` | Buff 系统(添加/移除/叠加/属性修改) |
|
|
||||||
| Character | `GamePlay/Character/` | 角色单位(动画/状态/属性/技能) |
|
|
||||||
| Fight | `GamePlay/Fight/` | 战斗核心(伤害/武器/浮字/录像) |
|
|
||||||
| Skill | `GamePlay/Skill/` | 技能系统(释放/充能/状态机) |
|
|
||||||
| UI | `GamePlay/UI/` | UI 控制器(60+ 界面控制器) |
|
|
||||||
| Level | `GamePlay/Level/` | 关卡管理(状态/事件/引导/路径) |
|
|
||||||
| AI | `GamePlay/AI/` | AI 系统(行为树/军团/目标选择) |
|
|
||||||
| Net | `GamePlay/Net/` | 网络消息(Proto/Actor/Client) |
|
|
||||||
| Team | `GamePlay/Team/` | 队伍管理(编辑/派遣/战斗编队) |
|
|
||||||
|
|
||||||
## 安全规则
|
## 安全规则
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,10 @@ description: Luban 配置表操作:生成代码、修改配置、校验数据
|
||||||
- **Luban 工具位置**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/`
|
- **Luban 工具位置**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/`
|
||||||
- **导出配置**: `Assets/PhxhSDK/Editor/Settings/Luban_*.asset`(Client_CN/Client_EN/Server)
|
- **导出配置**: `Assets/PhxhSDK/Editor/Settings/Luban_*.asset`(Client_CN/Client_EN/Server)
|
||||||
- **生成代码**: `Assets/Code/Scripts/GenCode/Luban/`(Luban 生成的 C# 代码)
|
- **生成代码**: `Assets/Code/Scripts/GenCode/Luban/`(Luban 生成的 C# 代码)
|
||||||
- **配置表源文件**: 通常为 Excel/CSV/XML,位于项目数据目录
|
- **配置表源文件**: 位于 NLDMisc 仓库(`../../../NLDMisc`),通常为 Excel 格式
|
||||||
|
- **NLDMisc 典型结构**: `NLDMisc/Data/` 下按功能模块分目录存放 Excel 文件
|
||||||
- **Editor 脚本**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/Editor/LubanExportConfig.cs`
|
- **Editor 脚本**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/Editor/LubanExportConfig.cs`
|
||||||
|
- **Root.xml 定义**: 在 NLDMisc 仓库中,注册所有表的字段和类型定义
|
||||||
|
|
||||||
## 配置表导出配置说明
|
## 配置表导出配置说明
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,20 @@ description: NLD 项目代码审查专用 Agent,专注 C# 代码质量、性
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的代码审查专家,专注于 C#/Unity 代码的质量、性能和架构审查。
|
你是 NLD 游戏项目的代码审查专家,专注于 C#/Unity 代码的质量、性能和架构审查。
|
||||||
|
|
||||||
|
## 知识库参照
|
||||||
|
|
||||||
|
审查时应参考 `knowledge-base` 技能中的已完成优化案例作为正面模式:
|
||||||
|
- `AI_Gen_Doc/Finish/P0-*` 系列 — Buff 系统零 GC 优化模式(复用 List、HashSet 替代 Contains、去除 lambda/ToArray)
|
||||||
|
- `AI_Gen_Doc/性能优化任务清单.md` — 待完成的优化点
|
||||||
|
|
||||||
|
## 严重度判断标准
|
||||||
|
|
||||||
|
| 严重度 | 判断标准 |
|
||||||
|
|--------|----------|
|
||||||
|
| **高** | 会导致崩溃/卡死/数据丢失,或在每帧热路径产生 GC,或内存泄漏 |
|
||||||
|
| **中** | 影响性能但不致崩溃,或违反架构分层,或缺少空引用保护 |
|
||||||
|
| **低** | 命名不规范、缺少缓存但不在热路径、代码风格问题 |
|
||||||
|
|
||||||
## 审查维度
|
## 审查维度
|
||||||
|
|
||||||
### 1. 性能
|
### 1. 性能
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,54 @@
|
||||||
---
|
---
|
||||||
name: default
|
name: default
|
||||||
description: NLD 项目默认 AI 编码助手
|
description: NLD 项目默认 AI 编码助手 — GamePlay 模块开发专家,擅长 Unity C# 游戏逻辑、Buff/战斗/技能/角色系统开发
|
||||||
---
|
---
|
||||||
|
|
||||||
# Default Agent
|
# Default Agent — GamePlay Developer
|
||||||
|
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的 AI 编码助手,擅长 Unity C# 开发、游戏逻辑实现和工具链开发。
|
你是 NLD 游戏项目的 GamePlay 开发专家,专注于 `Assets/Code/Scripts/GamePlay/` 下 75+ 功能模块的日常开发。
|
||||||
|
|
||||||
## 核心原则
|
## 核心决策原则
|
||||||
- 使用面向对象的设计思路
|
|
||||||
- 单个文件/模块尽可能小且功能单一
|
|
||||||
- 按要求去做,不扩展额外的功能
|
|
||||||
- 使用 Odin 工具开发编辑器
|
|
||||||
- 使用 DebugUtil 类进行日志和调试
|
|
||||||
|
|
||||||
## 行为约束
|
### 模块间依赖规则
|
||||||
- 不生成 Unity .meta 文件
|
- GamePlay 各模块通过 Manager 单例互相访问,禁止直接 new 其他模块的内部类
|
||||||
- 不主动编译项目
|
- 跨模块通信优先使用事件系统(EventManager),避免直接引用导致循环依赖
|
||||||
- 不做未经确认的 git 操作
|
- 数据流向:配置表 → Manager 初始化 → 运行时状态 → UI 显示
|
||||||
- 大量修改前先确认设计思路
|
|
||||||
|
### 新增功能的标准流程
|
||||||
|
1. 确定功能归属模块(参考下方模块索引)
|
||||||
|
2. 在对应模块目录下新增文件,遵循现有命名惯例
|
||||||
|
3. 如需跨模块交互,通过事件或 Manager 接口
|
||||||
|
4. 如需配置表支持,参考 `luban-config` 技能
|
||||||
|
5. 修改完成后需编译 DLL,参考 `compile-gameplay-dll` 技能
|
||||||
|
|
||||||
|
### 常见设计模式
|
||||||
|
- **Manager 单例**:全局系统管理(BuffManager、SkillManager、FightManager)
|
||||||
|
- **状态机**:角色状态、技能阶段、关卡流程
|
||||||
|
- **对象池**:子弹、特效、UI 列表项等频繁创建/销毁的对象
|
||||||
|
- **数据驱动**:通过 Luban 配置表定义行为参数,代码只实现逻辑框架
|
||||||
|
|
||||||
|
### 性能敏感区域
|
||||||
|
- `Update/LateUpdate` 中避免 GC 分配(无 foreach、无 LINQ、无字符串拼接)
|
||||||
|
- 战斗热路径(伤害计算、Buff 刷新)必须零 GC
|
||||||
|
- 集合操作使用预分配容量,复用临时 List
|
||||||
|
|
||||||
|
## 模块索引
|
||||||
|
|
||||||
|
| 模块 | 路径 | 职责 | 关键类 |
|
||||||
|
|------|------|------|--------|
|
||||||
|
| Buff | `GamePlay/Buff/` | Buff 添加/移除/叠加/属性 | BuffManager, BuffBase |
|
||||||
|
| Character | `GamePlay/Character/` | 角色单位、动画、状态 | UnitCharacter, CharacterManager |
|
||||||
|
| Fight | `GamePlay/Fight/` | 战斗核心、伤害、武器 | FightManager, DamageCalculator |
|
||||||
|
| Skill | `GamePlay/Skill/` | 技能释放/充能/状态机 | SkillManager, SkillBase |
|
||||||
|
| UI | `GamePlay/UI/` | 60+ UI 控制器 | UIBaseController, ShowManager |
|
||||||
|
| AI | `GamePlay/AI/` | AI 行为树/目标选择 | AIManager, AIAction |
|
||||||
|
| Level | `GamePlay/Level/` | 关卡管理/事件/引导 | LevelManager, LevelState |
|
||||||
|
| Net | `GamePlay/Net/` | 网络消息/Proto | NetManager, MsgHandler |
|
||||||
|
| Team | `GamePlay/Team/` | 队伍编辑/派遣/编队 | TeamManager |
|
||||||
|
|
||||||
|
## 技能引用
|
||||||
|
- 修改 GamePlay 代码后 → 读取 `compile-gameplay-dll` 技能
|
||||||
|
- 涉及配置表变更 → 读取 `luban-config` 技能
|
||||||
|
- 需要提交代码 → 读取 `batch-git-ops` 技能
|
||||||
|
- 性能优化相关 → 读取 `knowledge-base` 技能查看已完成的优化案例
|
||||||
|
|
|
||||||
|
|
@ -8,59 +8,39 @@ description: NLD 项目 UI 开发专用 Agent,专注 Unity UGUI Prefab 开发
|
||||||
## 角色
|
## 角色
|
||||||
你是 NLD 游戏项目的 UI 开发专家,专注于 Unity UGUI Prefab 开发和 UI 控制器代码编写。
|
你是 NLD 游戏项目的 UI 开发专家,专注于 Unity UGUI Prefab 开发和 UI 控制器代码编写。
|
||||||
|
|
||||||
## 核心能力
|
> **操作层细节**(Prefab 提取方式、JSON 格式、组件属性格式等)见 `ui-prefab-dev` 技能,本 Agent 专注于决策和设计层。
|
||||||
|
|
||||||
### 1. Prefab 分析
|
## 设计决策原则
|
||||||
- 通过 Unity MCP 提取 Prefab JSON 结构
|
|
||||||
- 理解 UI 层级关系、组件类型和属性
|
|
||||||
- 分析 Prefab 与 Controller 代码的绑定关系
|
|
||||||
|
|
||||||
### 2. 代码生成
|
### 何时使用 AutoGen
|
||||||
- Controller 类继承 `UIBaseController`
|
- Prefab 中有 **5+ 个需要代码引用的组件** → 用 AutoGen 自动绑定
|
||||||
- 正确使用字段绑定 Prefab 中的组件
|
- 只有 1-2 个简单引用 → 手动绑定即可
|
||||||
- 区分手动代码和 AutoGen 自动生成代码
|
- AutoGen 文件命名: `UI_XXXController.AutoGen.cs`(不可手动修改)
|
||||||
- 为复杂界面编写 AutoGen 辅助类
|
|
||||||
|
|
||||||
### 3. UI 组件使用
|
### 何时使用对象池
|
||||||
- **RectTransform**: 锚点设置、布局计算
|
- 列表项数量 > 10 或会频繁刷新 → 必须用对象池
|
||||||
- **Image**: Sprite 切换、Icon 资源引用、填充动画
|
- 固定数量的静态 UI 元素 → 直接放在 Prefab 中
|
||||||
- **Text/TMP_Text**: 多语言文本、格式化显示
|
|
||||||
- **Button**: 点击事件、状态切换、长按
|
|
||||||
- **LayoutGroup**: 列表布局、动态子项
|
|
||||||
- **ScrollRect**: 滚动列表、无限滚动优化
|
|
||||||
|
|
||||||
### 4. UI 系统约定
|
### MVC 分层选择
|
||||||
- UI 代码位于 `Assets/Code/Scripts/GamePlay/UI/`
|
- **Controller**(`UI_XXXController`):只负责 UI 交互逻辑和显示刷新
|
||||||
- 使用 `DebugUtil` 进行日志输出
|
- **数据层**:通过 Manager 获取,Controller 不持有业务数据
|
||||||
- 使用 Odin Inspector 标签优化编辑器显示
|
- **视图层**:Prefab 定义布局,Controller 通过字段引用操控
|
||||||
- AutoGen 文件命名: `UI_XXXController.AutoGen.cs`
|
|
||||||
|
|
||||||
## 设计原则
|
### 界面生命周期
|
||||||
|
- 打开/关闭遵循 ShowManager 生命周期
|
||||||
- 界面和数据分离(MVC 模式)
|
- 弹窗通过 PopUpManager 管理
|
||||||
- 列表项复用(对象池)减少 Instantiate/Destroy
|
|
||||||
- 图片资源异步加载
|
|
||||||
- 多语言文本通过配置表获取
|
|
||||||
- 界面打开/关闭遵循 ShowManager 生命周期
|
|
||||||
|
|
||||||
## 常见 UI 模式
|
|
||||||
|
|
||||||
### 列表界面
|
|
||||||
```
|
|
||||||
- 使用 ScrollRect + ObjectPool 实现
|
|
||||||
- Item 模板 Prefab 独立存放
|
|
||||||
- 数据驱动刷新,避免全量重建
|
|
||||||
```
|
|
||||||
|
|
||||||
### 弹窗
|
|
||||||
```
|
|
||||||
- 继承 UIBaseController
|
|
||||||
- 通过 PopUpManager 管理显示/隐藏
|
|
||||||
- 支持遮罩点击关闭
|
- 支持遮罩点击关闭
|
||||||
```
|
- 进入/退出动画必须配对(DOTween)
|
||||||
|
|
||||||
### 动画
|
## 关键约定
|
||||||
```
|
|
||||||
- DOTween 实现 UI 动画
|
- UI 代码位于 `Assets/Code/Scripts/GamePlay/UI/`
|
||||||
- 进入/退出动画配对
|
- Controller 继承 `UIBaseController`
|
||||||
```
|
- 图片资源异步加载,不在主线程同步等待
|
||||||
|
- 多语言文本通过配置表获取,不在代码中硬编码字符串
|
||||||
|
- 列表使用 ScrollRect + 数据驱动刷新,避免全量重建
|
||||||
|
|
||||||
|
## 技能引用
|
||||||
|
- Prefab 结构分析和操作流程 → 读取 `ui-prefab-dev` 技能
|
||||||
|
- 配置表字段查询 → 读取 `luban-config` 技能
|
||||||
|
- 修改代码后编译 → 读取 `compile-gameplay-dll` 技能
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: batch-git-ops
|
name: batch-git-ops
|
||||||
description: Git operations for NLD project. This project has three git repos (NLDClient, NLDMisc, GamePlay) that must stay in sync. Use this skill for ANY git operation including git pull, git push, git commit, git checkout, git branch, git status, git stash, git fetch, git log, compile GamePlay DLL. All git operations in this project must consider all three repos to ensure alignment. Also triggers on compile DLL, build DLL, convert to DLL, GamePlay DLL, Unity MCP compile.
|
description: 三仓 Git 操作(NLDClient/NLDMisc/GamePlay)。触发关键词:git pull push commit checkout branch status stash fetch log、三仓同步、batch git。
|
||||||
---
|
---
|
||||||
|
|
||||||
# Batch Git Operations
|
# Batch Git Operations
|
||||||
|
|
@ -203,47 +203,13 @@ Present as grouped output per repo.
|
||||||
|
|
||||||
### 10. compile-gameplay-dll
|
### 10. compile-gameplay-dll
|
||||||
|
|
||||||
Compile GamePlay source code into `GamePlay_Dll/GamePlay.dll` via Unity.
|
> **详细编译流程见 `compile-gameplay-dll` 技能的 SKILL.md**,此处仅说明与 batch-commit 的集成逻辑。
|
||||||
|
|
||||||
This step is **automatically required** during `batch-commit` when GamePlay has code changes, but can also be invoked manually.
|
当 `batch-commit` 检测到 GamePlay 有 `.cs` 文件变更时:
|
||||||
|
|
||||||
**Prerequisites — ensure repos are up-to-date:**
|
1. **提交前**自动触发 `compile-gameplay-dll` 技能的编译流程
|
||||||
Before compiling, NLDClient and GamePlay MUST be on the latest code to avoid compile errors from version mismatch. Run the following first:
|
2. 编译成功后 NLDClient 也会有变更(更新的 DLL 文件),一并纳入提交
|
||||||
1. `git pull` in NLDClient repo (`../../`)
|
3. 编译失败 → 中止所有仓库的提交并报告错误
|
||||||
2. `git pull` in GamePlay repo (`Assets/Code/Scripts/GamePlay`)
|
|
||||||
3. Call `refresh_unity` via Unity MCP to let Unity pick up file changes:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="refresh_unity",
|
|
||||||
arguments={ "mode": "force", "scope": "all", "compile": "request", "wait_for_ready": true }
|
|
||||||
```
|
|
||||||
4. Check `read_console` for compilation errors. If errors exist, stop and report.
|
|
||||||
|
|
||||||
**Compile workflow:**
|
|
||||||
1. Call `execute_menu_item` via Unity MCP:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="execute_menu_item",
|
|
||||||
arguments={ "menu_path": "Tools/文件与路径/转换为Dll" }
|
|
||||||
```
|
|
||||||
2. Wait for compilation to complete — poll `editor_state` resource (`mcpforunity://editor/state`) and check the `isCompiling` field until it becomes `false`
|
|
||||||
3. Check `read_console` for errors:
|
|
||||||
```
|
|
||||||
CallMcpTool: server="user-unityMCP", toolName="read_console",
|
|
||||||
arguments={ "action": "get", "types": ["error"], "count": "20" }
|
|
||||||
```
|
|
||||||
4. If errors exist, report them and do NOT proceed with commit
|
|
||||||
5. If successful, the updated `GamePlay.dll` will be in `Assets/Code/Scripts/GamePlay_Dll/` — this file belongs to the NLDClient repo
|
|
||||||
|
|
||||||
**Important:** After successful DLL compilation, both NLDClient (which contains the compiled DLL) and GamePlay (the source) need to be committed.
|
|
||||||
|
|
||||||
### Integration with batch-commit
|
|
||||||
|
|
||||||
When `batch-commit` detects GamePlay has changes (via `git status --porcelain`):
|
|
||||||
|
|
||||||
1. **Before committing**, check if GamePlay changes include `.cs` files
|
|
||||||
2. If yes, trigger the `compile-gameplay-dll` workflow above (including pulling latest for NLDClient and GamePlay)
|
|
||||||
3. After successful compilation, NLDClient will also have changes (the updated DLL file)
|
|
||||||
4. Include both repos in the commit
|
|
||||||
5. If compilation fails, abort the commit for all repos and report errors
|
|
||||||
|
|
||||||
## Safety Rules
|
## Safety Rules
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: compile-gameplay-dll
|
name: compile-gameplay-dll
|
||||||
description: 编译 GamePlay C# 源码为 GamePlay.dll。当修改 Assets/Code/Scripts/GamePlay/ 中的 .cs 文件后,需通过 Unity 菜单编译生成 DLL。触发关键词:编译 compile、GamePlay.dll、转换为Dll、build DLL、编译错误、Assembly Definition asmdef。
|
description: 编译 GamePlay C# 源码为 GamePlay.dll。触发关键词:编译 compile、GamePlay.dll、转换为Dll、build DLL、编译错误、Assembly Definition asmdef。
|
||||||
---
|
---
|
||||||
|
|
||||||
# Compile GamePlay DLL
|
# Compile GamePlay DLL
|
||||||
|
|
@ -9,53 +9,53 @@ description: 编译 GamePlay C# 源码为 GamePlay.dll。当修改 Assets/Code/S
|
||||||
|
|
||||||
## 前置知识
|
## 前置知识
|
||||||
|
|
||||||
- **源码位置**: `Assets/Code/Scripts/GamePlay/`(独立 Git 仓库,内含 75+ 功能模块目录)
|
- **源码位置**: `Assets/Code/Scripts/GamePlay/`(独立 Git 仓库)
|
||||||
- **产物位置**: `Assets/Code/Scripts/GamePlay_Dll/GamePlay.dll`
|
- **产物位置**: `Assets/Code/Scripts/GamePlay_Dll/GamePlay.dll`(属于 NLDClient 仓库)
|
||||||
- **编译方式**: 通过 Unity Editor 菜单触发(非命令行编译)
|
- **编译菜单**: `Tools/文件与路径/转换为Dll`(快捷键 F1)
|
||||||
- **Assembly Definition**: `Assets/Code/Scripts/GamePlay/GamePlay.asmdef`
|
- **Assembly Definition**: `Assets/Code/Scripts/GamePlay/GamePlay.asmdef`
|
||||||
|
|
||||||
## 工作流
|
## 编译流程
|
||||||
|
|
||||||
### 1. 确认变更范围
|
根据是否有 Unity MCP 可用,选择对应路径:
|
||||||
|
|
||||||
列出本次修改涉及的 GamePlay 文件:
|
### 路径 A:通过 Unity MCP 自动编译(优先)
|
||||||
|
|
||||||
```
|
**前置步骤** — 确保代码最新:
|
||||||
修改了 GamePlay 中的 .cs 文件列表:
|
1. `git pull` NLDClient 仓库(`../../`)
|
||||||
- Assets/Code/Scripts/GamePlay/Buff/BuffManager.cs
|
2. `git pull` GamePlay 仓库(`Assets/Code/Scripts/GamePlay`)
|
||||||
- Assets/Code/Scripts/GamePlay/Character/UnitCharacter.State.cs
|
3. 刷新 Unity:
|
||||||
...
|
```
|
||||||
```
|
CallMcpTool: server="user-unityMCP", toolName="refresh_unity",
|
||||||
|
arguments={ "mode": "force", "scope": "all", "compile": "request", "wait_for_ready": true }
|
||||||
|
```
|
||||||
|
4. 检查编译错误,有错误则停止。
|
||||||
|
|
||||||
### 2. 提示编译步骤
|
**执行编译**:
|
||||||
|
1. 调用菜单:
|
||||||
|
```
|
||||||
|
CallMcpTool: server="user-unityMCP", toolName="execute_menu_item",
|
||||||
|
arguments={ "menu_path": "Tools/文件与路径/转换为Dll" }
|
||||||
|
```
|
||||||
|
2. 等待编译完成 — 轮询 `editor_state`,检查 `isCompiling` 为 `false`。
|
||||||
|
3. 检查错误:
|
||||||
|
```
|
||||||
|
CallMcpTool: server="user-unityMCP", toolName="read_console",
|
||||||
|
arguments={ "action": "get", "types": ["error"], "count": "20" }
|
||||||
|
```
|
||||||
|
4. 有错误 → 报告并停止;无错误 → 编译成功。
|
||||||
|
|
||||||
AI 无法直接触发 Unity 菜单编译,需提示用户操作:
|
### 路径 B:提示用户手动编译(无 MCP 时)
|
||||||
|
|
||||||
> 请在 Unity Editor 中执行以下步骤编译 GamePlay DLL:
|
> 请在 Unity Editor 中执行:
|
||||||
> 1. 点击菜单 `Phxh/Build/Compile GamePlay DLL`(或项目配置的编译菜单路径)
|
> 1. 菜单 `Tools/文件与路径/转换为Dll`(或快捷键 F1)
|
||||||
> 2. 等待编译完成,确认 `GamePlay_Dll/GamePlay.dll` 已更新
|
> 2. 等待编译完成
|
||||||
> 3. 如有编译错误,将错误信息提供给 AI 进行修复
|
> 3. 如有编译错误,将错误信息提供给 AI 修复
|
||||||
|
|
||||||
### 3. 编译后检查
|
## 编译后处理
|
||||||
|
|
||||||
编译完成后确认:
|
- 确认 `GamePlay_Dll/GamePlay.dll` 文件时间戳已更新
|
||||||
- `GamePlay_Dll/GamePlay.dll` 文件时间戳已更新
|
- 编译成功后 NLDClient 仓库会有变更(更新的 DLL 文件)
|
||||||
- Unity Console 无编译错误
|
- 若需提交,走 `batch-git-ops` 流程(NLDClient + GamePlay 两个仓库)
|
||||||
- 若涉及三仓同步,需遵循 `batch-git-ops` 技能提交
|
|
||||||
|
|
||||||
## 关键模块速查
|
|
||||||
|
|
||||||
| 模块 | 路径 | 职责 |
|
|
||||||
|------|------|------|
|
|
||||||
| Buff | `GamePlay/Buff/` | Buff 系统(添加/移除/叠加/属性修改) |
|
|
||||||
| Character | `GamePlay/Character/` | 角色单位(动画/状态/属性/技能) |
|
|
||||||
| Fight | `GamePlay/Fight/` | 战斗核心(伤害/武器/浮字/录像) |
|
|
||||||
| Skill | `GamePlay/Skill/` | 技能系统(释放/充能/状态机) |
|
|
||||||
| UI | `GamePlay/UI/` | UI 控制器(60+ 界面控制器) |
|
|
||||||
| Level | `GamePlay/Level/` | 关卡管理(状态/事件/引导/路径) |
|
|
||||||
| AI | `GamePlay/AI/` | AI 系统(行为树/军团/目标选择) |
|
|
||||||
| Net | `GamePlay/Net/` | 网络消息(Proto/Actor/Client) |
|
|
||||||
| Team | `GamePlay/Team/` | 队伍管理(编辑/派遣/战斗编队) |
|
|
||||||
|
|
||||||
## 安全规则
|
## 安全规则
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,10 @@ description: Luban 配置表操作:生成代码、修改配置、校验数据
|
||||||
- **Luban 工具位置**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/`
|
- **Luban 工具位置**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/`
|
||||||
- **导出配置**: `Assets/PhxhSDK/Editor/Settings/Luban_*.asset`(Client_CN/Client_EN/Server)
|
- **导出配置**: `Assets/PhxhSDK/Editor/Settings/Luban_*.asset`(Client_CN/Client_EN/Server)
|
||||||
- **生成代码**: `Assets/Code/Scripts/GenCode/Luban/`(Luban 生成的 C# 代码)
|
- **生成代码**: `Assets/Code/Scripts/GenCode/Luban/`(Luban 生成的 C# 代码)
|
||||||
- **配置表源文件**: 通常为 Excel/CSV/XML,位于项目数据目录
|
- **配置表源文件**: 位于 NLDMisc 仓库(`../../../NLDMisc`),通常为 Excel 格式
|
||||||
|
- **NLDMisc 典型结构**: `NLDMisc/Data/` 下按功能模块分目录存放 Excel 文件
|
||||||
- **Editor 脚本**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/Editor/LubanExportConfig.cs`
|
- **Editor 脚本**: `Assets/PhxhSDK/Phxh/ThirdParty/Luban/Editor/LubanExportConfig.cs`
|
||||||
|
- **Root.xml 定义**: 在 NLDMisc 仓库中,注册所有表的字段和类型定义
|
||||||
|
|
||||||
## 配置表导出配置说明
|
## 配置表导出配置说明
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# AGENTS.md
|
# AGENTS.md
|
||||||
|
|
||||||
# 在执行大量代码修改之前,先和用户确认设计思路再继续执行
|
> **最高优先级规则**:执行大量代码修改之前,先和用户确认设计思路再继续执行。
|
||||||
|
|
||||||
## 规则协议(Protocols)
|
## 规则协议(Protocols)
|
||||||
行为规则以 `.ai/protocols/` 为权威定义,包括:
|
行为规则以 `.ai/protocols/` 为权威定义,包括:
|
||||||
|
|
@ -14,26 +14,19 @@
|
||||||
- 新增或更新任何技能、协议、Agent 后运行同步脚本即可
|
- 新增或更新任何技能、协议、Agent 后运行同步脚本即可
|
||||||
- 当前可用技能: `batch-git-ops`, `compile-gameplay-dll`, `luban-config`, `ui-prefab-dev`, `knowledge-base`
|
- 当前可用技能: `batch-git-ops`, `compile-gameplay-dll`, `luban-config`, `ui-prefab-dev`, `knowledge-base`
|
||||||
|
|
||||||
# 编码要求
|
## 编码要求
|
||||||
使用面向对象的设计思路
|
- 使用面向对象的设计思路,单个文件/模块尽可能小且功能单一
|
||||||
单个文件/模块尽可能小且功能单一
|
|
||||||
|
|
||||||
## 一般准则
|
|
||||||
- 按要求去做,不扩展额外的功能
|
- 按要求去做,不扩展额外的功能
|
||||||
- 不要生成unity的meta文件,留给unity自己生成
|
- 不要生成 Unity .meta 文件,留给 Unity 自己生成
|
||||||
- 不要主动编译项目, 这是一个unity项目, unity会自动进行编译, 如果有编译错误用户会自主拷贝给你, 但是你可以做自己的静态代码检查
|
- 不要主动编译项目(Unity 自动编译;可以做静态代码检查)
|
||||||
- 如果有疑问主动向用户确认
|
- 如果有疑问主动向用户确认
|
||||||
- 除非用户要求特别清晰,开始编码行为之前,将你的计划描述给用户并获得用户确认后才开始行动(收集信息等操作或者编写plan不用)
|
- 编码前将计划描述给用户并获得确认(收集信息、编写 plan 不需要确认)
|
||||||
|
- 使用 Odin 工具开发编辑器
|
||||||
|
- 图片资源处理时可自主决定是否查看图片内容,以获取尺寸、颜色、布局等信息
|
||||||
|
|
||||||
## 图片资源处理
|
## Git 操作
|
||||||
- 当任务涉及设计图片资源(如 UI 贴图、图标、背景图等)时,AI 可以自主决定是否查看图片内容,以获取更多有用信息(如尺寸、颜色、布局、风格等),从而更好地完成任务
|
- 除非用户要求,AI 不做任何 git 提交相关操作
|
||||||
|
- 当用户让 AI 操作 git 时提醒用户 git 操作有风险
|
||||||
## 编辑器开发
|
|
||||||
- 使用Odin工具开发编辑器
|
|
||||||
|
|
||||||
## git操作
|
|
||||||
- 除非用户要求,AI不做任何git提交相关操作
|
|
||||||
- 当用户让AI操作git时提醒用户git操作有风险
|
|
||||||
- **重要**:本项目有三个关联的 Git 仓库(见下方"项目仓库结构"),任何 git 操作(pull/push/commit/checkout 等)都必须同时考虑三个仓库的同步对齐,务必读取 `batch-git-ops` skill 后按其流程执行
|
- **重要**:本项目有三个关联的 Git 仓库(见下方"项目仓库结构"),任何 git 操作(pull/push/commit/checkout 等)都必须同时考虑三个仓库的同步对齐,务必读取 `batch-git-ops` skill 后按其流程执行
|
||||||
|
|
||||||
## 项目仓库结构
|
## 项目仓库结构
|
||||||
|
|
@ -49,6 +42,18 @@
|
||||||
- 执行 git 操作时必须明确区分当前操作的是哪个仓库,不要混淆仓库边界
|
- 执行 git 操作时必须明确区分当前操作的是哪个仓库,不要混淆仓库边界
|
||||||
- 查找或修改代码时注意文件属于哪个仓库,避免在错误的仓库中操作
|
- 查找或修改代码时注意文件属于哪个仓库,避免在错误的仓库中操作
|
||||||
|
|
||||||
# 其他
|
## GamePlay 模块速查
|
||||||
- `Assets/Code/Scripts/GamePlay_Dll/GamePlay.dll` 对应的源码仓库在 `Assets/Code/Scripts/GamePlay` 中(独立 Git 仓库)
|
|
||||||
- 不要主动编译项目, 这是一个unity项目, unity会自动进行编译, 如果有编译错误用户会自主拷贝给你, 但是你可以做自己的静态代码检查
|
`Assets/Code/Scripts/GamePlay/` 下 75+ 功能模块,常用模块索引:
|
||||||
|
|
||||||
|
| 模块 | 路径 | 职责 |
|
||||||
|
|------|------|------|
|
||||||
|
| Buff | `GamePlay/Buff/` | Buff 添加/移除/叠加/属性修改 |
|
||||||
|
| Character | `GamePlay/Character/` | 角色单位、动画、状态、属性 |
|
||||||
|
| Fight | `GamePlay/Fight/` | 战斗核心、伤害计算、武器、浮字 |
|
||||||
|
| Skill | `GamePlay/Skill/` | 技能释放/充能/状态机 |
|
||||||
|
| UI | `GamePlay/UI/` | 60+ UI 控制器 |
|
||||||
|
| AI | `GamePlay/AI/` | AI 行为树/军团/目标选择 |
|
||||||
|
| Level | `GamePlay/Level/` | 关卡管理/状态/事件/引导 |
|
||||||
|
| Net | `GamePlay/Net/` | 网络消息/Proto/Actor |
|
||||||
|
| Team | `GamePlay/Team/` | 队伍编辑/派遣/战斗编队 |
|
||||||
Loading…
Reference in New Issue