# Unity Project Agent Rules 你是当前 Unity 项目的开发助手。 在开始任何修改前,必须先阅读并遵守以下规则。 --- # 项目技术栈 Engine: Unity 2022.3 LTS Language: - C# - 禁止生成 JavaScript / UnityScript Render Pipeline: - URP Target Platform: - PC - Android - iOS --- # 工作流程 执行任何任务时: 1. 先分析目录结构 2. 搜索是否已有实现 3. 不重复创建系统 4. 优先复用已有模块 5. 先输出修改方案 6. 确认后再写代码 7. 修改后说明影响范围 禁止直接大规模重构。 禁止未经说明删除已有代码。 --- # 项目目录规范 Assets/ Scripts/ Prefabs/ Resources/ Art/ Resources/ Plugins/ Scenes/ StreamingAssets/ Settings/ 禁止: - 在根目录随意创建脚本 - 新建未知目录结构 - 修改 Plugins 必须遵守现有目录结构。 --- # 命名规范 类: PascalCase 示例: PlayerController GameManager InventorySystem 字段: _privateField 属性: CurrentHealth 方法: MovePlayer() LoadData() 常量: MAX_PLAYER_COUNT 接口: IInventory 枚举: PlayerState --- # MonoBehaviour规则 禁止: 一个脚本承担多个职责 避免: God Object 每个 MonoBehaviour 只负责: - 输入 - UI - 状态 - 行为 中的一种职责。 复杂逻辑拆到普通 C# 类。 --- # 架构原则 优先: Manager Service 事件驱动 避免: FindObjectOfType() 禁止: 每帧: GameObject.Find() 禁止: 在 Update 中频繁查找对象 缓存引用。 优先依赖注入。 优先事件系统。 --- # UI规则 使用: Canvas Prefab UI组件 禁止: 代码动态硬编码创建复杂UI 优先: [SerializeField] 不要使用: public直接暴露字段 例如: [SerializeField] private Button startButton; 而不是: public Button startButton; --- # 性能规则 禁止: Update空轮询 避免: GC Alloc 避免: 频繁new 避免: LINQ出现在Update 避免: 字符串频繁拼接: 错误: scoreText.text = "Score:"+score; 优先: scoreText.text = $"Score:{score}" 对象池优先于Instantiate/Destroy。 --- # 日志规则 统一: Debug.Log() 格式: [模块名] 示例: Debug.Log( "[Network] Connected" ) 错误: Debug.LogError( "[Inventory] Load Failed" ) 禁止无上下文日志。 --- # 网络规则 网络逻辑统一放: Scripts/Network/ 禁止: 业务逻辑直接请求服务器 通过: NetworkManager 统一转发 --- # ScriptableObject规则 配置数据: 使用 ScriptableObject 不要硬编码: 角色属性 武器数据 技能数据 关卡配置 --- # 修改代码前必须检查 是否已有: Manager 是否已有: Service 是否已有: 工具类 是否已有: Prefab 是否已有: 事件系统 优先复用。 --- # 输出代码规则 生成完整代码: 包含: using namespace 类定义 必要注释 不要只输出局部片段。 代码需要可直接复制运行。 --- # 回答规则 先解释: 修改思路 再输出: 代码 最后说明: 影响范围 性能影响 潜在风险 --- # 禁止行为 禁止: 直接删旧系统 禁止: 修改 ThirdParty 禁止: 改 Package 配置 禁止: 擅自升级 Unity 禁止: 创建重复功能 禁止: 猜测项目结构 不知道时先搜索。