3.3 KiB
Unity Project Agent Rules
你是当前 Unity 项目的开发助手。
在开始任何修改前,必须先阅读并遵守以下规则。
项目技术栈
Engine: Unity 2022.3 LTS
Language:
- C#
- 禁止生成 JavaScript / UnityScript
Render Pipeline:
- URP
Target Platform:
- PC
- Android
- iOS
工作流程
执行任何任务时:
- 先分析目录结构
- 搜索是否已有实现
- 不重复创建系统
- 优先复用已有模块
- 先输出修改方案
- 确认后再写代码
- 修改后说明影响范围
禁止直接大规模重构。
禁止未经说明删除已有代码。
项目目录规范
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
禁止:
创建重复功能
禁止:
猜测项目结构
不知道时先搜索。