2025年6月29日 作者 ljcduo 0

车友投稿:在Windows平台上使用Claude Code开发Unity项目的指南

我花了几个晚上试图在Windows环境下使用Claude Code来开发Unity项目,过程中遇到了一些挑战和问题。这里总结一下遇到的困难以及解决方案,希望能为其他开发者提供一些参考。

首先,得先给出一个结论:目前不建议在这个阶段尝试使用Claude Code进行Unity项目开发。原因很简单,Claude Code并不原生支持Windows平台,整个过程充满了各种坑,而且工程配置和调试的难度较大。即使最后成功跑通,实际的体验也远没有预期那么理想。

安装步骤概述

基本的安装流程包括先安装WSL(Windows Subsystem for Linux),然后在WSL环境中安装Claude Code(详细的安装步骤可以参考官方文档)。接着,通过Windows上的IDE(如VSCode或Rider)远程连接到WSL,打开Unity项目。由于篇幅问题,我不再赘述常规的安装和配置步骤,可以自行查阅相关文档,遇到问题时,也可以通过AI来帮助解决。

遇到的问题及解决方法

1. 在WSL终端启动Claude时,IDE命令无法识别

  • 问题:启动Claude后,使用/ide命令提示找不到IDE。
  • 解决方案:需要先在WSL环境中找到claude-code.vsix的位置,然后通过PowerShell安装它。接着,使用远程WSL连接打开Windows下的Unity项目目录。

2. 通过Remote WSL打开的项目无法加载MCP

  • 问题:MCP无法在Claude中加载。
  • 解决方案:在Remote WSL时,IDE只识别WSL路径格式。因此,需要将MCP配置文件(如mcp.json)中的路径替换为WSL的路径(例如/mnt/c/)。此外,WSL和Windows无法共享同一个虚拟环境(venv),因此需要分别为两者复制并使用不同的虚拟环境。

3. 不能进行C#语法分析

  • 问题:Claude无法正常对C#语法进行分析。
  • 解决方案:这是由于微软对非官方版本的VSCode限制了C#插件的支持。虽然Claude提供了自己的C#插件,但Unity的C#插件仍然依赖官方版本。可以尝试使用cursor C#插件配合dotrush插件,不过我个人最终选择了Rider。

4. Rider连接WSL后无法加载Unity项目

  • 问题:Rider通过Remote WSL连接时,无法识别Unity项目,报错缺少MSBuild。
  • 解决方案:按照微软官网的指导,在WSL中安装.NET 9.0 SDK,并在Rider的设置中手动指定.NET CLI路径(例如/usr/lib/dotnet/)。此外,还需要在WSL中安装mono-complete,安装后需要进行一些配置修复,以避免在执行EXE时遇到问题。

5. Rider无法识别项目中的符号

  • 问题:Rider通过WSL远程连接Unity项目后,无法识别任何符号。
  • 解决方案:这是由于项目中的.sln.csproj文件路径是Windows格式,需要手动修改为WSL格式。可以在Unity中添加一个脚本,在生成项目文件时自动转换路径。

6. 终端快捷键冲突

  • 问题:在Rider的Remote WSL终端中,无法通过Esc键返回上一级。
  • 解决方案:进入Settings,搜索Escape,找到Plugins/Terminal/Escape并清除该快捷键设置。

7. Rider诊断工具超时

  • 问题:调用ide diagnostic时,始终超时。
  • 解决方案:这个问题出现时一直没有找到具体原因,但最终我转向了VSCode,问题自然就没有了。

8. 无法与Unity MCP服务器正常通讯

  • 问题:Unity与WSL之间的MCP通信被Windows防火墙阻拦。
  • 解决方案:需要找到WSL的IP地址(使用ip addr show eth0命令),然后在Windows防火墙中添加允许该IP的入站规则。

9. VSCode无法分析C#语法

  • 问题:VSCode无法正确分析C#语法。
  • 解决方案:首先,按照微软的文档安装.NET SDK 9.0,然后安装mono-complete,并在VSCode的设置中指定正确的解决方案文件(.sln)。

10. 文件变动后Linter无法立即更新

  • 问题:WSL下无法实时监听文件变化,导致Linter分析结果延迟。
  • 解决方案:可以尝试开发一个VSCode插件结合MCP服务器,使每次修改文件后,VSCode能够及时更新Linter结果。这个方法我已经尝试过,但效果不太理想,仍在探索中。

11. Unity中无法用VSCode打开文件

  • 问题:Unity无法正确调用VSCode打开文件。
  • 解决方案:通过一个BAT脚本来实现Unity与VSCode之间的文件传递。脚本内容如下:
@echo off

set win_path=%1
set wsl_path=%win_path:\=/%

set wsl_path=%wsl_path:C:=/mnt/c%
set wsl_path=%wsl_path:D:=/mnt/d%

wsl.exe code -r --goto "%wsl_path%:%2" & disown & exit

12. 新增代码文件不在工作区

  • 问题:在Unity中新增的代码文件,VSCode提示不在当前工作区。
  • 解决方案:重新生成项目文件后,问题通常会解决。也可以通过Unity直接调用Rider接口来自动生成项目文件。

开发技巧

  1. ~/.claude/CLAUDE.md中定义Claude的规则,以引导它如何思考,并在~/.claude/settings.json中指定文本编辑器:
{
   "env": {
       "EDITOR": "code"
  }
}
  1. 强调每次修改后执行git commit,确保可以撤销错误修改。
  2. 使用dll extractor mcp工具(CSharpDllMetadataExtractor)来获取更精确的接口调用信息,避免模型产生误解。

使用体验

  1. 尽管Claude Code在任务托管方面表现较好,一句话可以完成大量工作,甚至包含测试和提交的完整流程,但它在编写质量上并没有比其他工具(如RIPER5加持的Cursor)好太多。Claude在Unity技术栈的掌握和游戏开发框架设计上的表现不如它在Web开发中的优秀。
  2. 由于Claude的编写质量不如预期,我始终不敢跳过检查,导致开发流程变成了“输入指令 – 等待 – 审查 – 调整”的循环。这种方式并没有显著提升生产力,反而因为需要人工审查每一步而降低了效率。
  3. 目前Claude的IDE集成功能较弱,它只能提供差异比较和诊断工具。对于日常开发中频繁使用的功能,如查看定义和引用,Claude都无法提供支持,严重影响了开发效率。
  4. Claude存在记忆和注意力上的问题。尽管我在对话中明确给出了开发目标和技术选型,Claude在记忆中反复提取的内容却偏离了最初的理解,导致其开发结果经常出现偏差。
  5. 缺乏图形界面支持,使用体验不尽如人意。特别是在Windows平台下,无法上传图片以及一些细节问题,影响了整体体验。

总的来说,Claude Code虽然在某些方面具备潜力,但其在实际开发中的应用还存在很多局限,特别是在Windows平台上,使用体验并不理想。