当前位置:首页 > 编程开发

AI 使用 Unity MCP 自动操作 Unity:从连接配置到生成五子棋场景的实战记录


最近测试了一下 Unity MCP,也就是通过 Model Context Protocol 让 AI 直接和 Unity Editor 通信。

它的核心价值很简单:AI 不再只是“给你写一段代码”,而是可以直接读取 Unity 当前场景、创建对象、写脚本、刷新编译、进入 Play Mode 验证结果,甚至检查 Console 错误。

这篇文章记录一次完整的实测流程:从启动 MCP Server,到 Unity 插件连接,再到让 AI 在 Unity 场景里创建一个单机五子棋 Demo。

测试环境

本次测试环境如下:

  • Unity 版本:2022.3.14f1c1

  • MCP for Unity:9.6.8

  • MCP Server:mcpforunityserver==9.6.8

  • 通信方式:HTTP + WebSocket

  • Server 地址:http://127.0.0.1:8756

启动命令:

C:\Users\11929\.local\bin\uvx.exe --from "mcpforunityserver==9.6.8" mcp-for-unity --transport http --http-url http://127.0.0.1:8756 --project-scoped-tools

启动成功后,终端会显示 FastMCP Server 正在运行:

Uvicorn running on http://127.0.0.1:8756

Unity 插件连接成功时,可以看到类似日志:

Plugin registered: Game (b1b111f65ef61b01)
Registered 30 tools for session
Server-level tool visibility synced from Unity

这说明 Unity Editor 已经通过 WebSocket 连上 MCP Server。

MCP 连接验证

连接成功后,可以通过接口确认 MCP Server 和 Unity 实例状态。

健康检查地址:

http://127.0.0.1:8756/health

返回示例:

{
  "status": "healthy",
  "version": "9.6.8",
  "message": "MCP for Unity server is running"
}

实例列表地址:

http://127.0.0.1:8756/api/instances

返回中可以看到 Unity 工程:

{
  "project": "Game",
  "hash": "b1b111f65ef61b01",
  "unity_version": "2022.3.14f1c1"
}

这一步很关键。如果 instances 是空数组,说明 Server 虽然启动了,但 Unity 插件还没有连接上。

使用 AI 创建测试场景

连接完成后,AI 就可以调用 Unity MCP 工具创建场景。

本次测试新建了一个场景:

Assets/GameMain/Scenes/MCP_TestScene.unity

然后通过 manage_scene 读取当前场景层级,确认场景已经创建成功。

最初测试时,我让 AI 创建了一个 Cube。这里发现了一个有意思的问题:使用 manage_gameobjectprimitive_type="Cube" 时,对象创建成功,但在当前工程里它只带了 Transform,没有 MeshFilter / MeshRenderer / BoxCollider

后来改用 Unity 原生命令:

GameObject/3D Object/Cube

再修改对象名称和位置,就可以得到完整 Cube:

Transform
MeshFilter
MeshRenderer
BoxCollider

这也说明 MCP 工具虽然很方便,但实际开发中仍然需要验证结果,不能盲信每一步调用都完全符合预期。

让 AI 写一个单机五子棋

接下来让 AI 在这个场景里实现一个单机五子棋 Demo。

实现方式比较轻量:场景中只保留一个控制对象:

MCP_GomokuGame

挂载脚本:

MCPGomokuGame

脚本路径:

Assets/GameMain/Scripts/MCPGomoku/MCPGomokuGame.cs

这个脚本负责在 Play Mode 自动生成:

  • 15x15 棋盘

  • 棋盘格子

  • 棋盘线

  • 黑白棋子

  • 摄像机

  • 灯光

  • UI 状态文字

  • 重新开始按钮

  • 玩家落子逻辑

  • 简单电脑 AI

  • 五连胜负判定

运行方式很简单:打开 MCP_TestScene.unity,点击 Play。

玩家执黑,鼠标点击棋盘落子,电脑自动下白子。任意一方五子连线后,左上角会显示胜负结果。

自动编译和验证

AI 写完脚本后,并不是直接结束,而是继续通过 MCP 执行 Unity 刷新和编译。

流程大致是:

  1. 写入 C# 脚本

  2. 调用 Unity 刷新脚本

  3. 等待 Domain Reload

  4. 重新连接 MCP Session

  5. 读取 Console 错误

  6. 挂载脚本到场景对象

  7. 保存场景

  8. 进入 Play Mode 验证

  9. 退出 Play Mode

测试中,Unity 脚本刷新会导致 MCP Session 短暂断开,这是正常现象。等 Unity 编译完成后,插件会重新连接。

最终验证结果:

Console error: 0
Play Mode: entered successfully
Runtime objects: generated
Play Mode: exited successfully

也就是说,这个五子棋 Demo 不只是“代码写出来了”,而是实际在 Unity 里跑过一次。

Unity MCP 的实际价值

这次测试下来,Unity MCP 最大的价值不是单纯生成代码,而是让 AI 具备了“操作 Unity Editor 的闭环能力”。

传统 AI 辅助开发通常是:

你问问题 -> AI 写代码 -> 你复制到 Unity -> 你编译 -> 你看报错 -> 再问 AI

使用 Unity MCP 后,流程变成:

AI 写代码 -> AI 刷新 Unity -> AI 检查 Console -> AI 修改场景 -> AI 进入 Play Mode 验证

这中间少了很多人工搬运工作。

尤其适合下面这些场景:

  • 快速搭建 Demo 场景

  • 自动生成测试对象

  • 批量修改场景层级

  • 写 Editor 工具

  • 检查 Console 编译错误

  • 生成小游戏原型

  • 辅助 Unity 新功能验证

使用过程中的注意事项

实际使用时有几个坑需要注意。

第一,端口要确认没被占用。之前尝试使用 8080 时,发现该端口被 Windows System 进程占用,访问 /health 返回 404。换到 8756 后正常。

第二,Unity 进入 Play Mode 或刷新脚本时,MCP 连接可能会短暂断开。这个不一定是错误,通常等待 Unity 重新注册即可。

第三,AI 调用工具后仍然要验证结果。比如本次测试中 primitive_type="Cube" 创建出来的对象不完整,最后通过 Unity 菜单命令修正。

第四,建议让 AI 每次大改后检查 Console。Unity 项目里最怕“看起来创建成功,实际有编译错误”。

总结

Unity MCP 让 AI 从“代码建议者”变成了“Unity 操作员”。

它可以直接和 Unity Editor 交互,完成场景创建、脚本写入、编译检查、运行验证等工作。

这次实测中,AI 成功完成了:

  • MCP Server 启动验证

  • Unity 插件连接验证

  • 新建 Unity 场景

  • 创建并挂载 MonoBehaviour 脚本

  • 实现单机五子棋

  • Play Mode 验证

  • Console 错误检查

对于 Unity 开发来说,这类工具很适合做原型验证和重复性编辑器操作。它还不能完全替代开发者,但已经可以显著减少“写代码、切 Unity、看报错、再改代码”的机械流程。

后续如果结合项目自身的工具链,比如资源规范、UI 框架、打包流程、自动化测试,Unity MCP 的价值会更明显。


扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=698

标签: unityAI
分享给朋友:

“AI 使用 Unity MCP 自动操作 Unity:从连接配置到生成五子棋场景的实战记录” 的相关文章

static_cast、dynamic_cast、reinterpret_cast、和const_cast

关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast dynamic_ca…

如何诊断Windows CE的应用程序崩溃(Remote Process Explorer使用)

如何诊断Windows CE的应用程序崩溃(Remote Process Explorer使用)…

怎样使用Eclipse来开发Android源码

用eclipse + ADT作为android开发工 具,可以说是很方便的,在HelloActivity小程序里我们就感觉到eclipse功能的强大。那么,我们可以用 eclipse来开发android源码吗?如果我们直接把android源码里一个工程导入eclipse,一般来说都会出现错误,说许…

在 CentOS 7 下安装配置 shadowsocks

CentOS 7 开始默认使用Systemd作为开启启动脚本的管理工具,Shadowsocks则是当前比较受欢迎的科学上网工具,本文将介绍如何在 CentOS 下安装和配置 Shadowsocks 服务。...…

WinXP与WinCE串口的运行机制之比较

    WinXP与WinCE串口的运行机制之比较…

多线程中生成随机数序列重复问题的解决方法

使用过随机数的程序员都知道在程序中并不能够实现的真正的完全的随机数函数。随机数函数产生的是通过公式计算出来的一系列伪随机数,这个公式会采用一个种子数计算出一个数,而该数将成为产生下一个数的种子数。基于产生随机数的原理,两次调用随机数后产生的随机数序列将是一样的,显然,这不是我们的期望的结果。....…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。