关注

当AI遇见游戏开发:我用MCP为Unity注入智能灵魂

本文旨在剖析Unity-MCP项目的工作原理。该项目通过模型上下文协议(MCP)将AI与Unity编辑器相连接,使开发者能用自然语言指令自动化完成脚本编写、场景设计、资产管理、测试调试等开发任务。

当前,我正在致力于开发Unity-MCP项目(Unity模型上下文协议),此项目的开发目的是通过MCP(Model Context Protocol:模型上下文协议)将Unity编辑器和Unity游戏与LLM代理连接起来。在本文中,我将详细介绍它的工作原理、实用性并讨论其后续的发展方向。

Unity本身是一个流行的游戏引擎,用于为许多平台(包括Windows、macOS、iOS、Android、控制台和Web)构建2D、3D、VR和AR应用程序。

什么是MCP(模型上下文协议)

MCP是Anthropic提出的一种开放协议,它规范了人工智能代理(LLM)如何通过“资源”和“工具”与外部工具和系统进行交互的方式。

MCP协议在JSON-RPC2.0上运行,并定义了工具、资源和提示的概念。

MCP使代理能够:

  • 读取文件、系统状态信息和元数据
  • 调用操作/函数(工具)
  • 协商哪些操作可用(能力协商)

因此,我们不需要手动编写代理和Unity之间的集成,而是将Unity嵌入为另一个MCP服务器,并使用一组代理可以理解的工具。

Unity-MCP的实际应用

Unity-MCP不仅仅是一个技术实验,它还能在日常工作中实际应用。以下是一些具体示例:

  • 自动化重复性任务。无需点击菜单添加数十个组件,你只需让AI执行“在玩家周围添加10个强度为2的灯光”即可。代理会为你完成这项工作。
  • 关卡设计和原型设计。设计师可以用简单的语言描述场景,例如“制作一个有墙壁和发光地板的竞技场”。Unity-MCP会将其转换为实际的Unity对象,从而加快原型设计速度。
  • 编程。通过要求AI“编写一个脚本,当角色踩到按钮时,该脚本应该打开一扇门”来开发技术系统。它会为你完成所有工作。
  • 视觉效果。需要复杂的视觉效果吗?让AI来解释,甚至可以使用粒子系统或创建新的着色器来实现。
  • 调试和测试。需要运行单元测试或收集日志吗?AI也能搞定。它会运行UnityTestRunner,分析结果,甚至提出修复建议。它甚至可以帮你修复问题。
  • 资产管理。大型项目可能会变得混乱;借助MCP,AI可以自动重命名、组织甚至生成占位符资产。
  • 教育场景。初学者可以将Unity-MCP用作导师:“为该对象添加一个刚体(Rigidbody),并解释每个属性的作用。”AI不仅会执行该操作,还会对其进行解释。

从你的角度来看,这就像与合作者交谈一样——你用自然语言描述你想要的内容,然后Unity就会做到。

为了特别介绍Unity-MCP的用法,我还录制了一段Unity-MCP的演示视频。你可以在YouTube上观看,了解AI是如何与Unity编辑器实时交互的。

网址:https://youtu.be/64GOqboE9ac

网址:https://youtu.be/kQUOCQ-c0-M

Unity-MCP能为你做什么

Unity-MCP可以作为自然语言和UnityAPI之间的桥梁。它的作用远不止在场景中放置对象:

  • 它可以创建着色器。例如,“制作一个随时间脉动的发光蓝色材质”将成为应用于对象的实际着色器代码。
  • 它可以构建游戏逻辑。例如,“当玩家靠近时打开门”——Unity-MCP会生成脚本并将其附加到游戏中。
  • 它可以设计整个场景。例如,假设你输入“一个房间里有一张桌子、一把椅子和一盏灯”,相应的设置就会出现在你的层级结构中。
  • 它可以修改和管理资产,因此你的文件夹保持井然有序,无需花费数小时手动重命名。
  • 它可以运行和调试测试,为你提供分析和建议,而不仅仅是原始错误日志。

简而言之,着色器、脚本、资产、测试——所有这些都可以通过简单地编写提示来创建或修改。

幕后:Unity-MCP的架构

当我开始构建Unity-MCP时,我的主要目标是让Unity看起来像一个AI可以实际使用的工具集。为了实现这个目标,我将项目分为几个层级:

1. Unity-MCP-Server(ASP.NET核心)

  • 使用JSON-RPC 2.0与MCP客户端处理所有通信。
  • 通过SignalR与Unity-MCP-Plugin进行通信。
  • 公开由AI代理可调用的“工具”、“资源”和“提示”。
  • 跨平台运行,可以作为独立二进制文件或在Docker内部运行。

2. Unity-MCP-Plugin

  • 通过SignalR连接Unity-MCP-Server的Unity包。
  • 将MCP功能镜像到Unity环境。
  • 使用反射和属性——任何用[McpPluginTool]装饰的方法都会自动可供AI使用。
[McpPluginTool("my-tool", Title = "It makes my stuff")]
public static void MyTool()
{
    //做任何你想做的事情
}

MCP客户端(AI代理)

MCP客户端是一个入口点,用户可以在这里与AI对话,AI利用MCP功能来完成工作。

它简直就是一个使用任何LLM的聊天窗口,只需支持MCP协议即可。当前市场上已经存在很多这样的聊天窗口:ClaudeCode、ClaudeDesktop、Codex、Cursor、Copilot、Windfsurf、Cline等等。

示例流程

接下来,我们来看一个具体的应用示例。

你输入一个自然提示:

“Create a red cube with a glowing shader in the center of the scene.”(中文意思:“在场景中心创建一个带有发光着色器的红色立方体。”)

AI会根据现有的工具列表解释请求:

  • 在适当的位置创建立方体
  • 附加上材质(如果不存在;则先创建材质)

AI通过阅读工具列表来了解能力,并使用这些工具来完成任务。

其使用的JSON格式如下所示:

{
  "name": "GameObject_Create",
  "arguments": {
    "name": "GlowingCube",
    "position": {
      "x": 0.0,
      "y": 0.0,
      "z": 0.0
    },
    "primitiveType": "Cube",
  }
}

Unity-MCP-Server接收请求并将其转发给Unity-MCP-Plugin。然后,Unity-MCP-Plugin调用所需的工具并提供参数。该工具在场景中创建一个原始的3D立方体,应用发光着色器,并确认成功。

最后,将结果通过服务器发回给AI,例如:

{
  "result": {
    "success": true,
    "objectName": "GlowingCube"
  }
}

从用户的角度来看,这感觉更容易、更自然:你用自然语言描述你想要的东西,然后Unity就会让它实现。

示例:在Unity中定义自定义工具

接下来,再看另一个简单的C#示例,说明Unity-MCP如何向AI代理公开功能。

通过使用[McpPluginTool]属性修饰方法,该方法将自动通过MCP变为可用:

using System.ComponentModel;
using com.IvanMurzak.ReflectorNet.Utils;
using com.IvanMurzak.Unity.MCP.Common;

[McpPluginType]
public class CreateObjectTool
{
    [McpPluginTool("create_object", "Creates a new GameObject in the current scene")]
    public string CreateGameObject(string name)
    {
        var go = new GameObject(name);
        return $"[Success] GameObject with instanceId={go.GetInstanceID()} created";
    }
}

通过此设置,AI代理现在可以像任何其他工具一样调用create_object。

例如,JSON请求可能如下所示:

{
  "name": "create_object",
  "arguments": {
    "name": "New GameObject"
  }
}

Unity-MCP执行该工具,在场景中创建对象,并将结果返回给AI。

系统架构

Unity-MCP实现了三层架构,通过中介服务器组件将AI客户端连接到Unity。

AI客户端(例如Claude、VSCodeMCP和CursorIDE)通过MCP协议(STDIO/HTTP)连接到Unity-MCP服务器。服务器使用SignalR(端口8080)与Unity环境通信。在Unity端,UnityMcpPlugin暴露Unity的API,并通过McpPlugin、RpcRouter和McpRunner把请求路由到可用的工具。简而言之,AI客户端→MCP服务器→Unity插件——这就是将自然语言命令转化为Unity操作的流程。

核心组件和代码映射

系统的核心功能是通过处理协议转换、工具执行和Unity集成的特定类和接口实现的。

MCP协议层通过IMcpServer和传输层(STDIO/HTTP)处理通信。带有SignalR集线器的通信桥通过RpcRouter实现请求的路由转发。工具执行系统(Tool_Execution_System)使用McpRunner、ToolRunnerCollection和@McpPluginTool、@McpPluginToolType等属性管理工具。最后,Unity集成层通过Reflector提供对Unity API的访问,管理主线程并处理日志记录。简而言之,AI请求的流程为:MCP服务器→SignalR桥→工具执行系统→Unity API。

工具系统架构

Unity-MCP通过动态工具系统公开Unity功能,该系统使用反射和属性使Unity API可供AI客户端使用。

工具类和方法使用诸如McpPluginToolType和McpPluginTool之类的属性声明,然后定义诸如测试执行、场景操作、资源管理和C#代码操作之类的类别。每个类别都映射到Unity API——例如,场景工具连接到Unity编辑器API,资源工具使用AssetDatabase,脚本工具与CompilationPipeline集成。反射系统将所有这些联系在一起,使用运行时反射机制、对象引用和JSON转换器,使AI可以访问Unity类型。简而言之,这一层将带注释的C#方法转换为AI代理可以调用的工具,直接映射到Unity的内部API。

通信协议流程

AI客户端向Unity-MCP-Server发送CallTool请求,然后由Unity-MCP-Server跟踪该请求并通过SignalR转发给Unity-MCP-Plugin。插件通过RpcRouter和McpRunner路由调用,并在Unity主线程上执行该调用。Unity返回API结果后,响应将以相同的方式返回——从插件到服务器,最终作为MCP工具结果返回到AI客户端。简而言之,它展示了AI代理的单个指令如何转化为可执行的UnityAPI调用并返回结果。

主要特性和功能

总之,Unity-MCP在幕后整合了许多强大的系统。以下是其中一些亮点:

  • 脚本操作:你可以通过Roslyn读取、编写甚至编译C#代码,并直接在Unity中执行。
  • 资产管理:AI具有用于创建和修改Unity资产和材质的工具。
  • 场景操控:游戏对象、组件、层次结构变化——所有这些都可以自动化。
  • 测试集成:AI可以远程运行UnityTestRunner并返回结构化结果。
  • 反射系统:使用自定义类型转换器动态访问Unity API的方式使系统非常灵活。
  • 多平台支持:MCP服务器跨平台运行,并与现代Unity版本兼容。

总之,这些功能使Unity-MCP不仅仅是一个实验工具,而是一个可以随着你的项目一起成长的完整工具包。

如果你想了解更多关于Unity MCP的信息,那么让我们通过下面一些方式联系吧:

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

    学习资源推荐 如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!​

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

四、AI大模型商业化落地方案

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2501_94005722/article/details/154533096

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--