关于 unity-compile-fixer
用于诊断 Unity C# 编译错误并提出针对性修复方案的技能。它结合 OmniSharp 诊断与错误模式库分析问题,并在修改前征求用户批准。
主要功能
- 01收集 VSCode C# 诊断
- 02匹配 CS 错误模式
- 03提出结合代码上下文的修复方案
- 04修改前征求批准
- 05检查 .meta 冲突并重新验证
适用场景
- 01诊断 Unity 脚本编译失败
- 02查找 CS 编译错误的可能原因
- 03应用前审阅代码修改建议
- 04修复后检查 Unity .meta 文件
MCP 相关
使用 mcp__ide__getDiagnostics 工具收集 VSCode 诊断;文档未说明它是 MCP 服务。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dev-gom/ claude-code-marketplace --skill unity-compile-fixer安装后在 Claude Code 中输入/unity-compile-fixer确认已加载。
附带文件references/error-patterns.jsonscripts/analyze-diagnostics.js
详细介绍
Unity 编译错误修复器
概述
此技能借助 VSCode 的诊断系统,自动检测并解决 Unity C# 编译错误。它会从 OmniSharp C# 语言服务器收集实时错误,根据整理好的常见 Unity 问题数据库分析错误模式,并提出结合上下文的解决方案,供用户批准后再应用修复。
何时使用此技能
在以下情况下使用此技能:
- Unity 项目在 VSCode 中报告 C# 编译错误
- 需要诊断 Unity 编译器错误(CS* 错误代码)的根本原因
- 希望获得常见 Unity 脚本问题的自动修复建议
- 使用集成了版本控制的 Unity 项目(Git、Unity Collaborate、Plastic SCM)
- 需要处理 Unity .meta 文件冲突
用户请求示例:
- “检查 Unity 编译错误并帮我修复”
- “我的 Unity 项目有编译器错误,你能诊断并修复吗?”
- “Unity 脚本无法编译,出了什么问题?”
- “修复我的 Unity 项目中的 C# 错误”
工作流
调用此技能时,请遵循以下工作流:
1. 检测编译错误
使用 mcp__ide__getDiagnostics 工具从 VSCode 收集错误:
// Collect all project diagnostics
mcp__ide__getDiagnostics()
// Or target specific Unity script files
mcp__ide__getDiagnostics({ uri: "file:///path/to/PlayerController.cs" })
筛选诊断结果,重点关注与 Unity 相关的错误:
- 严重性:仅处理
severity: "Error"的错误(忽略警告) - 来源:仅处理
source: "csharp"(OmniSharp C# 诊断) - 错误代码:重点关注 CS* 编译器错误代码(例如 CS0246、CS0029、CS1061)
2. 分析错误模式
对于每个检测到的错误:
-
提取错误信息:
- 从
uri和range获取文件路径和行号 - 从
message获取错误代码(例如“CS0246”) - 获取完整错误消息文本
- 从
-
与错误模式数据库匹配:
- 加载
references/error-patterns.json - 查找错误代码条目(例如 CS0246)
- 获取常见原因和解决方案
- 加载
-
读取受影响文件的上下文:
- 使用 Read 工具加载含错误的文件
- 检查周围代码以了解上下文
- 确定是否缺少导入、类型不正确或 API 使用不当
3. 生成解决方案提议
为每个错误创建结构化的修复提议:
**Error**: CS0246 at PlayerController.cs:45
**Message**: The type or namespace name 'Rigidbody' could not be found
**Analysis**:
- Missing using directive for UnityEngine namespace
- Common Unity API usage pattern
**Proposed Solution**:
Add `using UnityEngine;` at the top of PlayerController.cs
**Changes Required**:
- File: Assets/Scripts/PlayerController.cs
- Action: Insert using directive at line 1
4. 用户确认
应用任何修复之前:
-
以清晰、结构化的格式展示所有拟议解决方案
-
使用 AskUserQuestion 工具获取用户批准:
- 列出每个错误及拟议修复
- 允许用户批准全部修复、选择特定修复或取消
-
等待明确确认——不要自动应用修复
5. 应用已批准的修复
对于每个已批准的修复:
- 使用 Edit 工具修改受影响的文件
- 保留代码格式和现有结构
- 仅进行最小改动——只修复特定错误
示例:
Edit({
file_path: "Assets/Scripts/PlayerController.cs",
old_string: "public class PlayerController : MonoBehaviour",
new_string: "using UnityEngine;\n\npublic class PlayerController : MonoBehaviour"
})
6. 验证版本控制状态
应用修复后:
-
检查 .meta 文件冲突:
- 使用 Grep 搜索 Unity .meta 文件
- 确认脚本 GUID 未发生变化
- 检查合并冲突标记(<<<<<<、======、>>>>>>)
-
报告 VCS 状态:
- 列出已修改的文件
- 提醒任何 .meta 文件问题
- 根据需要建议 Git 操作
7. 重新验证编译
应用修复后:
- 使用
mcp__ide__getDiagnostics()重新运行诊断 - 比较修复前后的错误数量
- 向用户报告结果:
- 已修复的错误数量
- 剩余错误(如有)
- 成功率
错误模式数据库
此技能依赖 references/error-patterns.json 进行错误分析。此数据库包含:
- 错误代码:CS* 编译器错误代码
- 描述:易于理解的说明
- 常见原因:此错误在 Unity 中出现的典型原因
- 解决方案:分步修复说明
- Unity 特定说明:Unity API 注意事项
若要分析错误,请加载数据库并匹配错误代码:
Read({ file_path: "references/error-patterns.json" })
// Parse JSON and find errorCode entry
分析脚本
此技能在 scripts/ 中包含用于复杂错误分析的 Node.js 脚本:
scripts/analyze-diagnostics.js
处理 VSCode 诊断 JSON 输出,并提取与 Unity 相关的错误。
用法:
node scripts/analyze-diagnostics.js <diagnostics-json-file>
输出:
- 经过筛选的 Unity C# 编译错误列表
- 按类型分类的错误(缺少导入、类型错误、API 问题)
- 严重程度和文件位置
此脚本可独立运行,也可在需要详细分析时由 SKILL.md 工作流调用。
最佳实践
使用此技能时:
- 先检查整个项目的诊断信息——不带参数调用
mcp__ide__getDiagnostics(),获取完整的错误概况 - 按严重程度和依赖关系确定错误优先级——先修复基础错误(缺少导入),再处理后续错误
- 批量修复相关问题——将同一文件中的错误归在一起,以提高编辑效率
- 始终检查 VCS 状态——Unity .meta 文件对版本控制至关重要
- 修复后重新验证——确保错误确实已解决
资源
scripts/analyze-diagnostics.js
用于处理 VSCode 诊断信息并筛选 Unity 专属 C# 错误的 Node.js 脚本。
references/error-patterns.json
常见 Unity C# 编译错误的精选数据库,包含解决方案和 Unity 专属指导。