多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Unity-MCP实战:让Claude Code与Trae直接驱动Unity场景与脚本开发

Unity-MCP实战:让Claude Code与Trae直接驱动Unity场景与脚本开发 最近一直在折腾用 AI 编程工具直接驱动 Unity 开发思路很简单代码我让 Claude Code 或者 Trae 来写引擎状态我让 Unity-MCP 这个桥接层实时给它们看。说白了就是让 AI 不再对着代码瞎猜而是能“看着”Unity 的场景、日志和组件去改东西。这篇是系列第一篇先把工具链的搭建和一次完整的最小闭环讲清楚适合那些已经在用 AI 写代码、但每次都要手动切回 Unity 验证效果的人。如果你还没接触过这套组合可以先记一个结论Unity-MCP 是桥Claude Code 或 Trae 是大脑Unity 是身体。MCP 全称 Model Context Protocol就是给 AI 模型开了一堆工具接口让它可以读取外部状态、执行外部操作。而 Unity-MCP 这个开源项目就是把 Unity 编辑器的场景信息、Console 日志、组件列表这些东西暴露给本地 MCP 服务端AI 助手通过调用这些工具就能实时感知引擎里发生了什么。这比我之前“复制报错 → 粘贴给 AI → 让 AI 猜”的流程靠谱了一个量级。1. 先把工具链拆明白Unity-MCP 到底解决了什么问题1.1 两个痛点我自己以前用 AI 写 Unity 脚本最大的痛点是信息断裂。AI 能看到你给的脚本文件但它看不到工程里有哪些场景、场景里有哪些 GameObject、某个组件挂载在哪、运行时报了什么错。结果就是 AI 经常写出一个“看起来没问题但一挂载就报空引用”的脚本然后你来回贴报错它来回改折腾半天。第二个痛点是操作割裂。就算 AI 写的代码逻辑正确你还得手动打开 Unity、把脚本拖到物体上、设置参数、点 Play 看效果。如果 AI 想调整某个物体的坐标或者材质它只能生成代码片段然后你复制到 Inspector 里手动填。这种“半自动”的体验说实话还不如自己手写。Unity-MCP 解决的就是这两个问题它让 AI 能读取引擎状态同时能触发引擎操作。1.2 MCP 到底是什么Unity-MCP 在其中的角色MCP 可以理解成 AI 应用和外界的“USB-C 接口”。以前每个 AI 工具接外部数据都要写各自的协议现在 Anthropic 提了一个标准Claude Code 这类客户端按这个标准往外连服务端按这个标准暴露能力。Unity-MCP 就是其中一个服务端它跑在你本机上默认监听一个本地端口然后 Unity 编辑器里装一个配套的插件包负责把编辑器的状态发给服务端也接收服务端下发的指令。具体到 Unity-MCP 这个项目它能做的事情大概分四类。第一类是读取获取当前场景里所有对象的层级结构、Transform 信息、组件列表以及所有 C# 脚本的清单和内容。第二类是修改通过 API 给对象添加组件、设置 Transform 数值、创建或删除物体。第三类是执行调用 Unity 菜单命令比如保存场景、进入 Play Mode、加载某个场景。第四类是监控读取 Console 窗口里的日志包括报错和警告AI 看到报错后可以直接定位到对应的脚本行去改。这里要特别强调一个使用前提Unity 编辑器必须处于打开状态。MCP 本质上依赖编辑器里的 Plugin 来做中介如果编辑器没开AI 调任何工具都会失败。这个点我第一次用的时候没注意以为 MCP 服务起了就等于能用结果 AI 一直在报连接错误排查了半天才发现是编辑器没开。新手第一次配置建议先把 Unity 项目打开再启动 MCP 服务再开 Claude Code 或 Trae这个顺序最稳。1.3 工具选型Claude Code、Trae该用哪个既然标题里列了两个工具我把自己的使用感受放在一起对比一下方便你按习惯选。我这段时间是“双持”状态编码验证用 Claude Code图形界面下做复杂改动时开 Trae。工具形态适合场景注意事项Claude Code终端工具Anthropic 官方喜欢命令行、习惯 script 化操作、要自己控制整个流程需要 Node.js 环境调用模型需要 API Key 或账号订阅TraeAI IDE内置智能体偏好可视化界面、想直接看差异 diff、希望开箱即用有积分/额度机制Builder 模式做多文件改动比较强适合不折腾的用户Claude Code 的优势是控制力强。你在终端里启动它它会像结对编程的人一样先读目录结构、分析代码、然后逐步改每步操作都给你看。配合 MCP 后它可以在一个会话里连续做“读场景 → 改脚本 → 运行 → 看日志 → 修复”的闭环非常适合我这种需要精确掌握每个环节的人。Trae 的优势则是集成度高它本身就是一个完整的 IDE打开就能看到 Unity 工程的文件树MCP 配置和会话管理都在界面里操作对新手友好很多但要用好它得先理解它的积分和 Builder 模式否则很容易在复杂的多文件修改里烧掉大量额度。所以我的建议是如果你已经熟练使用命令行直接上 Claude Code自由度和可控性都更好如果你更习惯 VS Code 这类编辑器的交互方式选 Trae从它入手会更平滑。两个工具都可以接同一个 Unity-MCP 服务切换的成本很低。2. 环境准备与安装2.1 Unity 端准备工作磨刀不误砍柴工。配置这套链路之前先把 Unity 工程和环境整理干净。Unity 版本建议 2021.3 LTS 以上我自己用的是 2022.3 LTS稳定性比较好。工程本身最好是一个干净的 3D 或 2D 模板项目先别塞太多第三方插件这样排查问题的时候干扰项少。另外要注意Unity 项目的根目录里最好只有一个 Assets 和 Packages 文件夹不要嵌套多层同名项目否则后面 AI 扫描文件结构时会产生很多噪音。然后是 Python 环境。Unity-MCP 的服务端是用 Python 写的我建议装 Python 3.10 或 3.11找到稳定版本安装后把 python 命令加进系统 PATH。社区里也有用 uv 来管理 Python 环境和依赖的这种方式更干净不会污染系统全局 Python。不管用哪种方式最后你要能在终端里执行python --version看到版本号这一关过不了后面都是白搭。Node.js 环境如果你要用 Claude Code也顺手装掉。在终端执行node -v如果提示找不到命令就去 Node 官网下载 LTS 版本安装。Claude Code 本身对 Node 版本要求不高但我建议至少 18 以上新版本对 MCP 的处理更稳定。2.2 安装 Unity-MCP两种方式Unity-MCP 的安装分成两半一半是 Unity 编辑器里的插件包一半是 Python 服务端。这两半没装好任何一个AI 都连不上。Unity 插件包的安装我推荐用 Package Manager 的 Git URL 方式。在 Unity 里打开 Window Package Manager点左上角的加号选择“Add package from git URL”然后填入这个开源项目的 Git 地址Unity 会自动拉取并编译。这种方式的好处是后续更新方便重新拉一次最新代码就行。如果你不想用 Git也可以直接下载项目里的Packages文件夹手动复制到你工程根目录的Packages下但这种方式升级会比较麻烦。装完之后菜单栏会出现一个 Unity MCP 相关的入口。第一次用把“Load on Startup”选项勾上这样以后 Unity 启动时会自动加载插件不用每次手动启用。然后记录一下默认端口不同版本的默认端口可能不一样通常是一个四位数记下来后面配置 MCP 时要用。Python 服务端的安装也很直接。把项目克隆或下载到本地某个目录进入该目录后在终端执行依赖安装。如果用的是 pip直接pip install -r requirements.txt如果用的是 uv就执行uv sync。安装完成后终端执行启动命令例如python -m unity_mcp.server不同仓库的启动命令略有差异一切以你下载的那个项目 README 为准。启动后你会看到服务监听在某个端口说明服务端起来了。2.3 配置 MCP 到 Claude Code 和 Trae服务端启动后就要让 AI 工具作为 MCP 客户端去连接它。这一步是新手最容易迷糊的因为不同工具的配置入口差别很大。Claude Code 的配置我用命令行搞定。先进入 Unity 工程根目录然后执行注册命令claude mcp add unity-mcp -- python -m unity_mcp.server如果你想把这个 MCP 只挂在当前项目下可以加一个--scope project参数。注册完后用claude mcp list查看如果显示connected或者running说明连接成功。接着直接启动claude进入对话我建议先问它一句“当前场景叫什么场景里有哪些物体”如果它能准确回答说明 Unity-MCP 已经生效了。Trae 的配置更图形化。在设置里找到 MCP 或模型上下文协议相关的面板添加一个本地服务命令栏里填上启动命令工作目录指向 Unity 工程根目录。这里有个细节命令里的路径最好用绝对路径Python 也要写完整路径否则 Trae 后台可能找不到可执行文件。配好后Trae 的对话窗口里会出现工具调用的日志你发送指令后能看到它调用了哪些 MCP 工具、返回了什么结果排查起来比命令行直观很多。配置项Claude CodeTrae配置入口命令行claude mcp add设置面板 MCP 添加常用命令claude mcp list面板里看状态适合人群终端党、脚本化操作界面党、可视化 diff调试友好度命令行日志直接输出对话内显示工具调用记录3. 实操从让 AI 改脚本到驱动引擎3.1 第一件事让 Claude Code 读懂 Unity 项目环境全通了我建议先别急着让它干活先做一次“项目体检”。进入 Claude Code 后我通常会发这么一段话先扫描这个 Unity 项目的 Assets 目录结构列出主要脚本对应的功能再告诉我场景里有哪些物体。这一步不是浪费 token而是给 AI 建立上下文。Claude Code 会先读目录再调用 MCP 的工具去拿场景信息。如果项目里脚本不多它会逐个看如果脚本很多它会先列出文件名和命名空间然后挑核心的读取。我个人的习惯是让它先扫一遍之后我再说需求这样它后续改代码时不会偏离项目原有的架构风格。比如项目里用的是 UniTask 而不是协程AI 看过现有代码后就会自动沿用 UniTask 的写法而不是重新发明一套。这里有个小坑值得说如果你在 Unity 工程里同时开着文件夹缩略图预览或者别的 AI 插件Claude Code 在读取时可能会因为文件锁定而报错。遇到这种情况关掉不必要的编辑器窗口保持工程文件夹干净避免给 AI 的文件系统操作添乱。3.2 通过 MCP 让 AI 操作 Unity 场景读懂了项目就可以让它动手了。我现在常用的操作有两种一种是让 AI 直接生成脚本并挂在场景物体上另一种是让 AI 创建或修改场景里的物体。这两种都离不开 MCP 提供的能力。给你看一个很典型的例子。我在一个空场景里想让 AI 做个测试道具就对它说“在场景里创建一个 Cube把它放在 (0, 1, 0) 的位置给它添加 Rigidbody 和 BoxCollider然后给一个红色材质。”Claude Code 会先看看场景里有没有同名的对象避免创建冲突然后调用 MCP 的工具去执行“创建物体”、“设置 Transform”、“添加组件”这些动作。如果它在一个工具调用里要改多个属性Unity-MCP 会把操作排进队列在编辑器里逐步执行你切回 Unity 能看到物体被一步步建出来。这类操作的核心逻辑是AI 把一句话拆成多个 MCP 工具调用每个调用对应一个编辑器操作。所以你的指令描述得越具体AI 拆解得就越准。比如“给 Cube 设置红色材质”它默认会创建一个标准材质再赋给物体如果你说“用现有材质球 Assets/Materials/Red.mat”它就会直接引用已有资源省去创建步骤。这就是我说的“说人话做实事”给 AI 清晰的约束它返回的结果才符合预期。不过要注意MCP 的调用并不是万能钥匙。比如修改 Terrain 地形或者大量模型批处理这种重操作靠一个 MCP 工具去执行会很慢。遇到这种场景我更建议让 AI 写一个编辑器脚本来完成批量操作然后用 MCP 执行菜单命令运行这个脚本。一句话总结小改动让 AI 直接操作场景大改动让 AI 写工具再触发工具。3.3 一次完整的任务闭环示例把链路串起来看最有价值的其实是“改脚本 → 挂载 → 运行 → 看日志 → 修复”这个闭环。我分享一个实际做过的例子。需求是给场景里一个 2D 三角形物体写一个自动来回移动的脚本。传统流程是写脚本 → 手动拖到物体上 → 点 Play → 看 Console。现在用这套工具链我在 Claude Code 里描述完需求后它先读现有脚本的风格生成一个PingPongMove.cs再用 MCP 查场景找到目标物体然后调用“添加组件”把脚本挂上去设置好移动速度和距离参数。接着它问我可不可以进入 Play Mode 验证我确认后它调用工具进入运行状态然后读取 Console 日志看到没有任何报错随后退出播放模式。整个过程里我不需要切回 Unity 一次所有操作都在对话里完成。如果运行时报了“NullReferenceException”这类错误AI 可以直接从 MCP 拿到报错信息并定位到脚本行修完再跑一遍。这种体验比我手动来回切换高效了太多尤其适合做玩法原型验证一个下午能迭代好多次。Trae 这边也有类似体验而且因为它是 IDE你可以在旁边实时看到文件的变化和 MCP 调用的记录。如果你第一次用我建议从 Trae 入手逻辑更直观。等你能完整跑通一次“让 AI 加脚本并挂载”的任务再换 Claude Code 也不迟。4. 常见问题与排查技巧4.1 安装与连接问题配置这套环境大多数人都会在连接环节卡一下。我把自己踩过和帮别人排查过的坑整理成一个速查表你照着检查能省很多时间。现象可能原因解决办法Python 服务启动报错 ModuleNotFoundError依赖没装全或 Python 版本不对确认pip install -r requirements.txt执行成功或改用 uv 重新 syncUnity 菜单里没有 Unity MCP 入口插件包没导入成功打开 Package Manager 检查包列表重开 Unity 编辑器Claude Code 提示找不到工具MCP 没注册或连接失败执行claude mcp list查看状态重新claude mcp addTrae 显示 MCP 启动失败命令路径不对或工作目录不是 Unity 根目录把 Python 和启动命令写成绝对路径工作目录指向工程根目录AI 调用 MCP 工具时报“Editor is not running”Unity 编辑器没开或插件没加载打开 Unity 工程确认 Load on Startup 已勾选有一个特别隐蔽的坑如果你用了中文启动器或者非官方的 Claude Code 包装版本有些功能会缺失尤其是 MCP 的注册和管理可能被裁剪掉。网上热词里经常有人搜“claude code 中文启动器”但我个人建议还是用官方原版把界面语言靠配置文件或者提示词改成适合自己的方式稳定第一。另一个注意点是端口冲突。有时候你之前启动过别的 MCP 服务占用了同一个端口Unity-MCP 就会启动失败。你可以改端口或者干脆重启一下系统把所有残留进程清掉。4.2 工具使用与工作流问题连上了不代表就能用得顺。这里说几个工作习惯层面的问题主要是为了避免“AI 改完你不敢合并”。第一AI 大规模改代码之前一定先给工程做一次 Git 提交。我自己是让 Claude Code 在动手前先执行git status和git diff让我看清楚它要改哪些文件。这样即使它改崩了也能随时恢复。你要是没有版本控制就直接让它改改坏了自己慢慢哭吧。第二Trae 的积分消耗问题。热词里很多人搜“trae 积分兑换码”“trae 无限积分”说明大家都被额度卡过。我的感受是Trae 的 Builder 模式在大型重构时消耗会比较快所以日常小改动尽量用 Chat 模式把需求说清楚让它给方案确定要改的时候再切 Builder尽量减少试错循环。另外提示词越具体AI 越少做无用功额度消耗自然下降。第三Claude Code 的 Skills 扩展。如果你想让 AI 更懂 Unity 特定领域的写法可以在~/.claude/skills目录下放自定义技能比如针对 UGUI 优化、针对 Addressables 加载流程写一些规则说明。这些技能其实就像给 AI 的领域手册它遇到相关问题时会自动去读。4.3 效率与习惯建议最后分享几个我在实际项目中验证过的效率习惯。先给它定规矩。Claude Code 支持配置文件你可以在工程目录下放一个CLAUDE.md里面写清楚项目是 Unity 2022.3、命名空间规范、UI 层用什么框架、是否使用 UniTask 等。每次会话开始AI 会自动读取这个文件这样它的代码风格会贴合你项目已有的写法。Trae 里也有类似的上下文设置建议把工程的技术栈说明写详细。再控制任务粒度。一次对话只让 AI 做一件事特别是在 Unity 这种状态敏感的环境里。你让它“顺便也优化一下 UI 布局”它可能就偏离主线改出额外的问题。我通常让它完成一个小任务后停下来检查一下 Unity 编辑器状态再继续下一个任务。还有一个容易被忽略的点如果项目比较大MCP 读取场景信息可能会有点慢AI 有时会超时。我的做法是在 MCP 服务端那边调整超时时间设置同时把 Unity 场景设计得更模块化再配合 Addressables 做资源隔离这样单个场景的物体数量可控AI 的响应速度也就上来了。我自己在使用中最深的体会有两个一是 MCP 能力的边界完全取决于 AI 工具的能力Claude Code 现在确实能更可靠地调度工具链Trae 则在集成度和易用性上更占优势二是这套工具链的价值不在于“AI 自动写代码”而在于它把“写代码、改场景、跑测试”这几个环节捏成了一个完整的反馈回路让开发者的精力更集中在决策上。这篇先讲到这里后续我打算继续写更进阶的玩法比如如何让 AI 结合 Unity Test Framework 做自动回归、如何在多人协作工程里共享 MCP 配置以及 Trae 进阶工作流的实际体验。
返回列表