譯者 | 朱先忠
審校 | 重樓

當前,我正在致力于開發(fā)Unity-MCP項目(Unity模型上下文協(xié)議),此項目的開發(fā)目的是通過MCP(Model Context Protocol:模型上下文協(xié)議)將Unity編輯器和Unity游戲與LLM代理連接起來。在本文中,我將詳細介紹它的工作原理、實用性并討論其后續(xù)的發(fā)展方向。
Unity本身是一個流行的游戲引擎,用于為許多平臺(包括Windows、macOS、iOS、Android、控制臺和Web)構建2D、3D、VR和AR應用程序。
什么是MCP(模型上下文協(xié)議)
MCP是Anthropic提出的一種開放協(xié)議,它規(guī)范了人工智能代理(LLM)如何通過“資源”和“工具”與外部工具和系統(tǒng)進行交互的方式。
MCP協(xié)議在JSON-RPC2.0上運行,并定義了工具、資源和提示的概念。
MCP使代理能夠:
- 讀取文件、系統(tǒng)狀態(tài)信息和元數(shù)據
- 調用操作/函數(shù)(工具)
- 協(xié)商哪些操作可用(能力協(xié)商)
因此,我們不需要手動編寫代理和Unity之間的集成,而是將Unity嵌入為另一個MCP服務器,并使用一組代理可以理解的工具。

Unity-MCP的實際應用
Unity-MCP不僅僅是一個技術實驗,它還能在日常工作中實際應用。以下是一些具體示例:
- 自動化重復性任務。無需點擊菜單添加數(shù)十個組件,你只需讓AI執(zhí)行“在玩家周圍添加10個強度為2的燈光”即可。代理會為你完成這項工作。
- 關卡設計和原型設計。設計師可以用簡單的語言描述場景,例如“制作一個有墻壁和發(fā)光地板的競技場”。Unity-MCP會將其轉換為實際的Unity對象,從而加快原型設計速度。
- 編程。通過要求AI“編寫一個腳本,當角色踩到按鈕時,該腳本應該打開一扇門”來開發(fā)技術系統(tǒng)。它會為你完成所有工作。
- 視覺效果。需要復雜的視覺效果嗎?讓AI來解釋,甚至可以使用粒子系統(tǒng)或創(chuàng)建新的著色器來實現(xiàn)。
- 調試和測試。需要運行單元測試或收集日志嗎?AI也能搞定。它會運行UnityTestRunner,分析結果,甚至提出修復建議。它甚至可以幫你修復問題。
- 資產管理。大型項目可能會變得混亂;借助MCP,AI可以自動重命名、組織甚至生成占位符資產。
- 教育場景。初學者可以將Unity-MCP用作導師:“為該對象添加一個剛體(Rigidbody),并解釋每個屬性的作用。”AI不僅會執(zhí)行該操作,還會對其進行解釋。
從你的角度來看,這就像與合作者交談一樣——你用自然語言描述你想要的內容,然后Unity就會做到。
為了特別介紹Unity-MCP的用法,我還錄制了一段Unity-MCP的演示視頻。你可以在YouTube上觀看,了解AI是如何與Unity編輯器實時交互的。

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

網址:https://youtu.be/kQUOCQ-c0-M
Unity-MCP能為你做什么
Unity-MCP可以作為自然語言和UnityAPI之間的橋梁。它的作用遠不止在場景中放置對象:
- 它可以創(chuàng)建著色器。例如,“制作一個隨時間脈動的發(fā)光藍色材質”將成為應用于對象的實際著色器代碼。
- 它可以構建游戲邏輯。例如,“當玩家靠近時打開門”——Unity-MCP會生成腳本并將其附加到游戲中。
- 它可以設計整個場景。例如,假設你輸入“一個房間里有一張桌子、一把椅子和一盞燈”,相應的設置就會出現(xiàn)在你的層級結構中。
- 它可以修改和管理資產,因此你的文件夾保持井然有序,無需花費數(shù)小時手動重命名。
- 它可以運行和調試測試,為你提供分析和建議,而不僅僅是原始錯誤日志。
簡而言之,著色器、腳本、資產、測試——所有這些都可以通過簡單地編寫提示來創(chuàng)建或修改。
幕后:Unity-MCP的架構
當我開始構建Unity-MCP時,我的主要目標是讓Unity看起來像一個AI可以實際使用的工具集。為了實現(xiàn)這個目標,我將項目分為幾個層級:
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環(huán)境。
- 使用反射和屬性——任何用[McpPluginTool]裝飾的方法都會自動可供AI使用。
[McpPluginTool("my-tool", Title = "It makes my stuff")]
public static void MyTool()
{
//做任何你想做的事情
}MCP客戶端(AI代理)
MCP客戶端是一個入口點,用戶可以在這里與AI對話,AI利用MCP功能來完成工作。
它簡直就是一個使用任何LLM的聊天窗口,只需支持MCP協(xié)議即可。當前市場上已經存在很多這樣的聊天窗口:ClaudeCode、ClaudeDesktop、Codex、Cursor、Copilot、Windfsurf、Cline等等。
示例流程
接下來,我們來看一個具體的應用示例。
你輸入一個自然提示:
“Create a red cube with a glowing shader in the center of the scene.”(中文意思:“在場景中心創(chuàng)建一個帶有發(fā)光著色器的紅色立方體。”)AI會根據現(xiàn)有的工具列表解釋請求:
- 在適當?shù)奈恢脛?chuàng)建立方體
- 附加上材質(如果不存在;則先創(chuàng)建材質)
AI通過閱讀工具列表來了解能力,并使用這些工具來完成任務。
其使用的JSON格式如下所示:
{
"name": "GameObject_Create",
"arguments": {
"name": "GlowingCube",
"position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"primitiveType": "Cube",
}
}Unity-MCP-Server接收請求并將其轉發(fā)給Unity-MCP-Plugin。然后,Unity-MCP-Plugin調用所需的工具并提供參數(shù)。該工具在場景中創(chuàng)建一個原始的3D立方體,應用發(fā)光著色器,并確認成功。
最后,將結果通過服務器發(fā)回給AI,例如:
{
"result": {
"success": true,
"objectName": "GlowingCube"
}
}從用戶的角度來看,這感覺更容易、更自然:你用自然語言描述你想要的東西,然后Unity就會讓它實現(xiàn)。
示例:在Unity中定義自定義工具
接下來,再看另一個簡單的C#示例,說明Unity-MCP如何向AI代理公開功能。
通過使用[McpPluginTool]屬性修飾方法,該方法將自動通過MCP變?yōu)榭捎茫?/span>
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代理現(xiàn)在可以像任何其他工具一樣調用create_object。
例如,JSON請求可能如下所示:
{
"name": "create_object",
"arguments": {
"name": "New GameObject"
}
}Unity-MCP執(zhí)行該工具,在場景中創(chuàng)建對象,并將結果返回給AI。
系統(tǒng)架構
Unity-MCP實現(xiàn)了三層架構,通過中介服務器組件將AI客戶端連接到Unity。

AI客戶端(例如Claude、VSCodeMCP和CursorIDE)通過MCP協(xié)議(STDIO/HTTP)連接到Unity-MCP服務器。服務器使用SignalR(端口8080)與Unity環(huán)境通信。在Unity端,UnityMcpPlugin暴露Unity的API,并通過McpPlugin、RpcRouter和McpRunner把請求路由到可用的工具。簡而言之,AI客戶端→MCP服務器→Unity插件——這就是將自然語言命令轉化為Unity操作的流程。
核心組件和代碼映射
系統(tǒng)的核心功能是通過處理協(xié)議轉換、工具執(zhí)行和Unity集成的特定類和接口實現(xiàn)的。

MCP協(xié)議層通過IMcpServer和傳輸層(STDIO/HTTP)處理通信。帶有SignalR集線器的通信橋通過RpcRouter實現(xiàn)請求的路由轉發(fā)。工具執(zhí)行系統(tǒng)(Tool_Execution_System)使用McpRunner、ToolRunnerCollection和@McpPluginTool、@McpPluginToolType等屬性管理工具。最后,Unity集成層通過Reflector提供對Unity API的訪問,管理主線程并處理日志記錄。簡而言之,AI請求的流程為:MCP服務器→SignalR橋→工具執(zhí)行系統(tǒng)→Unity API。
工具系統(tǒng)架構
Unity-MCP通過動態(tài)工具系統(tǒng)公開Unity功能,該系統(tǒng)使用反射和屬性使Unity API可供AI客戶端使用。

工具類和方法使用諸如McpPluginToolType和McpPluginTool之類的屬性聲明,然后定義諸如測試執(zhí)行、場景操作、資源管理和C#代碼操作之類的類別。每個類別都映射到Unity API——例如,場景工具連接到Unity編輯器API,資源工具使用AssetDatabase,腳本工具與CompilationPipeline集成。反射系統(tǒng)將所有這些聯(lián)系在一起,使用運行時反射機制、對象引用和JSON轉換器,使AI可以訪問Unity類型。簡而言之,這一層將帶注釋的C#方法轉換為AI代理可以調用的工具,直接映射到Unity的內部API。
通信協(xié)議流程

AI客戶端向Unity-MCP-Server發(fā)送CallTool請求,然后由Unity-MCP-Server跟蹤該請求并通過SignalR轉發(fā)給Unity-MCP-Plugin。插件通過RpcRouter和McpRunner路由調用,并在Unity主線程上執(zhí)行該調用。Unity返回API結果后,響應將以相同的方式返回——從插件到服務器,最終作為MCP工具結果返回到AI客戶端。簡而言之,它展示了AI代理的單個指令如何轉化為可執(zhí)行的UnityAPI調用并返回結果。
主要特性和功能
總之,Unity-MCP在幕后整合了許多強大的系統(tǒng)。以下是其中一些亮點:
- 腳本操作:你可以通過Roslyn讀取、編寫甚至編譯C#代碼,并直接在Unity中執(zhí)行。
- 資產管理:AI具有用于創(chuàng)建和修改Unity資產和材質的工具。
- 場景操控:游戲對象、組件、層次結構變化——所有這些都可以自動化。
- 測試集成:AI可以遠程運行UnityTestRunner并返回結構化結果。
- 反射系統(tǒng):使用自定義類型轉換器動態(tài)訪問Unity API的方式使系統(tǒng)非常靈活。
- 多平臺支持:MCP服務器跨平臺運行,并與現(xiàn)代Unity版本兼容。
總之,這些功能使Unity-MCP不僅僅是一個實驗工具,而是一個可以隨著你的項目一起成長的完整工具包。
如果你想了解更多關于Unity MCP的信息,那么讓我們通過下面一些方式聯(lián)系吧:
譯者介紹
朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。
原文標題:How I Made Unity-MCP — Bridging AI and Game Development,作者:Ivan Murzak





























