mcpField
U
unity-compile-fixer

unity-compile-fixer

github.com/dev-gom开发9773 次安装41 周前更新
代码仓库

关于 unity-compile-fixer

用于诊断 Unity C# 编译错误并提出针对性修复方案的技能。它结合 OmniSharp 诊断与错误模式库分析问题,并在修改前征求用户批准。

主要功能

  1. 01收集 VSCode C# 诊断
  2. 02匹配 CS 错误模式
  3. 03提出结合代码上下文的修复方案
  4. 04修改前征求批准
  5. 05检查 .meta 冲突并重新验证

适用场景

  1. 01诊断 Unity 脚本编译失败
  2. 02查找 CS 编译错误的可能原因
  3. 03应用前审阅代码修改建议
  4. 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. 分析错误模式

对于每个检测到的错误:

  1. 提取错误信息:

    • 从 uri 和 range 获取文件路径和行号
    • 从 message 获取错误代码(例如“CS0246”)
    • 获取完整错误消息文本
  2. 与错误模式数据库匹配:

    • 加载 references/error-patterns.json
    • 查找错误代码条目(例如 CS0246)
    • 获取常见原因和解决方案
  3. 读取受影响文件的上下文:

    • 使用 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. 用户确认

应用任何修复之前:

  1. 以清晰、结构化的格式展示所有拟议解决方案

  2. 使用 AskUserQuestion 工具获取用户批准:

    • 列出每个错误及拟议修复
    • 允许用户批准全部修复、选择特定修复或取消
  3. 等待明确确认——不要自动应用修复

5. 应用已批准的修复

对于每个已批准的修复:

  1. 使用 Edit 工具修改受影响的文件
  2. 保留代码格式和现有结构
  3. 仅进行最小改动——只修复特定错误

示例:

Edit({
  file_path: "Assets/Scripts/PlayerController.cs",
  old_string: "public class PlayerController : MonoBehaviour",
  new_string: "using UnityEngine;\n\npublic class PlayerController : MonoBehaviour"
})
6. 验证版本控制状态

应用修复后:

  1. 检查 .meta 文件冲突:

    • 使用 Grep 搜索 Unity .meta 文件
    • 确认脚本 GUID 未发生变化
    • 检查合并冲突标记(<<<<<<、======、>>>>>>)
  2. 报告 VCS 状态:

    • 列出已修改的文件
    • 提醒任何 .meta 文件问题
    • 根据需要建议 Git 操作
7. 重新验证编译

应用修复后:

  1. 使用 mcp__ide__getDiagnostics() 重新运行诊断
  2. 比较修复前后的错误数量
  3. 向用户报告结果:
    • 已修复的错误数量
    • 剩余错误(如有)
    • 成功率

错误模式数据库

此技能依赖 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 工作流调用。

最佳实践

使用此技能时:

  1. 先检查整个项目的诊断信息——不带参数调用 mcp__ide__getDiagnostics(),获取完整的错误概况
  2. 按严重程度和依赖关系确定错误优先级——先修复基础错误(缺少导入),再处理后续错误
  3. 批量修复相关问题——将同一文件中的错误归在一起,以提高编辑效率
  4. 始终检查 VCS 状态——Unity .meta 文件对版本控制至关重要
  5. 修复后重新验证——确保错误确实已解决

资源

scripts/analyze-diagnostics.js

用于处理 VSCode 诊断信息并筛选 Unity 专属 C# 错误的 Node.js 脚本。

references/error-patterns.json

常见 Unity C# 编译错误的精选数据库,包含解决方案和 Unity 专属指导。

评论

支持 Markdown