當(dāng)AI遇見游戲開發(fā):我用MCP為Unity注入智能靈魂
譯者 | 朱先忠
審校 | 重樓

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

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

網(wǎng)址:??https://youtu.be/64GOqboE9ac??

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

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

MCP協(xié)議層通過IMcpServer和傳輸層(STDIO/HTTP)處理通信。帶有SignalR集線器的通信橋通過RpcRouter實現(xiàn)請求的路由轉(zhuǎn)發(fā)。工具執(zhí)行系統(tǒng)(Tool_Execution_System)使用McpRunner、ToolRunnerCollection和@McpPluginTool、@McpPluginToolType等屬性管理工具。最后,Unity集成層通過Reflector提供對Unity API的訪問,管理主線程并處理日志記錄。簡而言之,AI請求的流程為:MCP服務(wù)器→SignalR橋→工具執(zhí)行系統(tǒng)→Unity API。
工具系統(tǒng)架構(gòu)
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)系在一起,使用運行時反射機(jī)制、對象引用和JSON轉(zhuǎn)換器,使AI可以訪問Unity類型。簡而言之,這一層將帶注釋的C#方法轉(zhuǎn)換為AI代理可以調(diào)用的工具,直接映射到Unity的內(nèi)部API。
通信協(xié)議流程

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

















