用途:对 Unity 项目的 C# 代码做静态性能审计,在不运行游戏、不使用 Profiler 的前提下,用 Grep 和 Glob 扫描源码,找出性能反模式。触发方式包括 /perf、/perf-audit,以及“audit performance”“optimiser performance”“anti-pattern performance”等说法。
主要能力:产出项目 C# 文件清单(数量、大小、超大文件);按严重度与位置列出检测到的反模式报告;给出 5 个优先修复项及修改前后代码。内置决策树按症状分流:整体低 FPS 走完整扫描;偶发卡顿走 CPU 反模式(C1-C12);内存上涨或 OOM 崩溃走内存反模式(M1-M7);渲染慢、draw call 高走 GPU 反模式(G1-G5);无具体症状则做预防性完整扫描。
使用方式:先扫描项目结构,例如 Glob: Assets/**/.cs,并用 find <project>/Assets -name ".cs" -not -path "/Plugins/" -not -path "/ThirdParty/" -not -path "/TextMesh Pro/" | xargs wc -l | sort -rn | head -20 统计行数;再对全部 .cs 文件执行 Grep 检测反模式;随后按严重度评分(Critical 10、High 5、Medium 2、Low 1),全局分 0-10 为干净、11-30 可接受、31-60 有问题、61+ 为严重;最后生成按严重度分组的表格报告,并给出 5 个优先修复的前后代码。常见修复包括把 Update 中的 GetComponent 缓存到 Awake、缓存 Camera.main、用 StringBuilder 替代字符串拼接、用对象池替代 Update 中的 Instantiate、用 CompareTag 替代 .tag ==、缓存 WaitForSeconds、在 OnDisable/OnDestroy 中取消事件订阅等。
适用场景:Unity 项目性能预防性审计、按症状定位 CPU/GPU/内存热点、构建前检查。
限制:仅做静态分析,不替代实际 Profiler 测量;只报告代码中真实存在的问题,不臆测;排除 Plugins/、ThirdParty/、TextMesh Pro/ 等第三方代码;不优化只执行一次的代码;不建议大规模重构或外部付费工具;需项目含 Assets/ 下的 C# 脚本并具备读取权限,无需额外包或工具。相关技能:/unity-debug、/unity-refactor、/unity-test。完整反模式表见 references/anti-patterns.md。