| English | 简体中文 |
|---|
使用 LLM 创建您的 Unity 应用程序!
MCP for Unity 作为桥梁,允许 AI 助手(如 Claude、Cursor)通过本地 MCP(模型上下文协议)客户端 直接与您的 Unity 编辑器交互。给您的 LLM 工具来管理资源、控制场景、编辑脚本并在 Unity 中自动化任务。
<img width="406" height="704" alt="MCP for Unity 截图" src="docs/images/readme_ui.png">获取帮助,分享想法,并与其他 MCP for Unity 开发者合作!
您的 LLM 可以使用以下函数:
execute_menu_item: 执行 Unity 编辑器菜单项(例如,“文件/保存项目”)。manage_asset: 执行资源操作(导入、创建、修改、删除等)。manage_editor: 控制和查询编辑器的状态和设置。manage_gameobject: 管理 GameObject(创建、修改、删除、查找和组件操作)。manage_prefabs: 执行预制件操作(创建、修改、删除等)。manage_scene: 管理场景(加载、保存、创建、获取层次结构等)。manage_script: 兼容路由器用于旧版脚本操作(创建、读取、删除)。建议使用 apply_text_edits 或 script_apply_edits 进行编辑。manage_shader: 执行着色器 CRUD 操作(创建、读取、修改、删除)。read_console: 获取或清除控制台消息。run_tests: 在 Unity 编辑器中运行测试。set_active_instance: 将后续工具调用路由到特定的 Unity 实例(当多个实例运行时)。apply_text_edits: 使用预条件哈希和原子多编辑批次进行精确文本编辑。script_apply_edits: 结构化的 C# 方法/类编辑(插入/替换/删除),具有更安全的边界。validate_script: 快速验证(基本/标准)以在写入前后捕获语法/结构问题。create_script: 在给定的项目路径下创建一个新的 C# 脚本。delete_script: 通过 URI 或 Assets 相对路径删除 C# 脚本。get_sha: 获取 Unity C# 脚本的 SHA256 和基本元数据,而不返回文件内容。您的 LLM 可以检索以下资源:
unity_instances: 列出所有正在运行的 Unity 编辑器实例及其详细信息(名称、路径、端口、状态)。menu_items: 检索 Unity 编辑器中的所有可用菜单项。tests: 检索 Unity 编辑器中的所有可用测试。可以选择特定类型的测试(例如,“EditMode”,“PlayMode”)。editor_active_tool: 当前激活的编辑器工具(移动、旋转、缩放等)和变换句柄设置。editor_prefab_stage: 如果预制件处于隔离模式,则当前预制件编辑上下文。editor_selection: 编辑器中当前选中的对象的详细信息。editor_state: 当前编辑器运行状态,包括播放模式、编译状态、活动场景和选中总结。editor_windows: 所有当前打开的编辑器窗口及其标题、类型、位置和焦点状态。project_info: 静态项目信息,包括根路径、Unity 版本和平台。project_layers: 项目 TagManager 中定义的所有层及其索引(0-31)。project_tags: 项目 TagManager 中定义的所有标签。MCP for Unity 使用两个组件连接您的工具:
Python: 版本 3.10 或更新版本。下载 Python
Unity Hub & 编辑器: 版本 2021.3 LTS 或更新版本。下载 Unity
uv (Python 工具链管理器):
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
winget install --id=astral-sh.uv -e
# 文档: https://docs.astral.sh/uv/getting-started/installation/
一个 MCP 客户端: : Claude Desktop | Claude Code | Cursor | Visual Studio Code Copilot | Windsurf | 其他需要手动配置
对于 **严格** 验证级别,可以捕获未定义的命名空间、类型和方法:
**方法 1: Unity 的 NuGet (推荐)**
1. 安装 [NuGetForUnity](https://github.com/GlitchEnzo/NuGetForUnity)
2. 转到 `窗口 > NuGet 包管理器`
3. 搜索 `Microsoft.CodeAnalysis`,选择版本 4.14.0 并安装该包
4. 同时安装 `SQLitePCLRaw.core` 和 `SQLitePCLRaw.bundle_e_sqlite3` 包。
5. 转到 `播放器设置 > 脚本定义符号`
6. 添加 `USE_ROSLYN`
7. 重启 Unity
**方法 2: 手动安装 DLL**
1. 从 [NuGet](https://www.nuget.org/packages/Microsoft.CodeAnalysis.CSharp/) 下载 Microsoft.CodeAnalysis.CSharp.dll 及其依赖项
2. 将 DLL 放置在 `Assets/Plugins/` 文件夹中
3. 确保 .NET 兼容性设置正确
4. 添加 `USE_ROSLYN` 到脚本定义符号
5. 重启 Unity
**注意:** 没有 Roslyn,脚本验证会回退到基本结构检查。Roslyn 可以启用完整的 C# 编译器诊断,并提供精确的错误报告。</details>
窗口 > 包管理器。+ -> 从 Git URL 添加包...。https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity
添加。openupm add com.coplaydev.unity-mcp注意: 如果您在 Coplay 维护之前安装了 MCP 服务器,您需要先卸载旧的包,然后再重新安装新的包。
将您的 MCP 客户端(Claude、Cursor 等)连接到第一步设置的 Python 服务器(自动)或通过手动配置(如下)。
选项 A: 自动设置(推荐用于 Claude/Cursor/VSC Copilot)
窗口 > MCP for Unity。自动设置。Code/User/mcp.json,顶级 servers.unityMCP 和 "type": "stdio"。在 Windows 上,MCP for Unity 写入绝对 uv.exe(优先使用 WinGet Links shim)以避免 PATH 问题。uv 丢失,MCP for Unity 窗口显示 "uv 未找到" 并带有快速 [HELP] 链接和 "选择 uv 安装位置" 按钮。claude,窗口显示 "Claude 未找到" 并带有 [HELP] 和 "选择 Claude 位置" 按钮。注销现在会立即更新 UI。</details>选项 B: 手动配置
如果自动设置失败或您使用不同的客户端:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonmcpServers 部分,使用步骤 1 中的确切路径。Claude Code
如果您使用 Claude Code,您可以使用以下命令注册 MCP 服务器:
macOS:
claude mcp add --scope user UnityMCP -- uv --directory /Users/USERNAME/Library/AppSupport/UnityMCP/UnityMcpServer/src run server.py
Windows:
claude mcp add --scope user UnityMCP -- "C:/Users/USERNAME/AppData/Local/Microsoft/WinGet/Links/uv.exe" --directory "C:/Users/USERNAME/AppData/Local/UnityMCP/UnityMcpServer/src" run server.py
VSCode(所有操作系统)
{
"servers": {
"unityMCP": {
"command": "uv",
"args": ["--directory","<ABSOLUTE_PATH_TO>/UnityMcpServer/src","run","server.py"],
"type": "stdio"
}
}
}
在 Windows 上,将 command 设置为绝对 shim,例如 C:\\Users\\YOU\\AppData\\Local\\Microsoft\\WinGet\\Links\\uv.exe。
Windows:
{
"mcpServers": {
"UnityMCP": {
"command": "uv",
"args": [
"run",
"--directory",
"C:\\Users\\YOUR_USERNAME\\AppData\\Local\\UnityMCP\\UnityMcpServer\\src",
"server.py"
]
}
// ... 其他服务器可能在这里 ...
}
}
(记得替换 YOUR_USERNAME 并使用双反斜杠 \)
macOS:
{
"mcpServers": {
"UnityMCP": {
"command": "uv",
"args": [
"run",
"--directory",
"/Users/YOUR_USERNAME/Library/AppSupport/UnityMCP/UnityMcpServer/src",
"server.py"
]
}
// ... 其他服务器可能在这里 ...
}
}
(替换 YOUR_USERNAME。注意:AppSupport 是一个符号链接到 "Application Support" 以避免引用问题)
Linux:
{
"mcpServers": {
"UnityMCP": {
"command": "uv",
"args": [
"run",
"--directory",
"/home/YOUR_USERNAME/.local/share/UnityMCP/UnityMcpServer/src",
"server.py"
]
}
// ... 其他服务器可能在这里 ...
}
}
(替换 YOUR_USERNAME)
</details>打开您的 Unity 项目。 MCP for Unity 包应自动连接。通过窗口 > MCP for Unity 检查状态。
启动您的 MCP 客户端(Claude、Cursor 等)。它应该使用安装步骤 2 中的配置自动启动 MCP for Unity 服务器(Python)。
交互! Unity 工具现在应在您的 MCP 客户端中可用。
示例提示:创建一个 3D 玩家控制器,创建一个 3D 的井字游戏,创建一个酷炫的着色器并应用到一个立方体上。
MCP for Unity 支持同时处理多个 Unity 编辑器实例。每个实例在 MCP 客户端会话中是隔离的。
要将工具调用定向到特定实例:
unity_instances 资源set_active_instance 和实例名称(例如,MyProject@abc123)示例:
用户: "列出所有 Unity 实例"
LLM: [显示 ProjectA@abc123 和 ProjectB@def456]
用户: "设置活动实例为 ProjectA@abc123"
LLM: [调用 set_active_instance("ProjectA@abc123")]
用户: "创建一个红色立方体"
LLM: [在 ProjectA 中创建立方体]
参见 README-DEV.md 以获取完整的开发设置和工作流文档。
MCP for Unity 使用与 Unity 的 C# 脚本绑定的 Python MCP 服务器来实现工具。如果您想通过自己的工具扩展功能,请参阅 CUSTOM_TOOLS.md 学习如何操作。
feature/your-idea 或 bugfix/your-fix)。MCP for Unity 包含 注重隐私的匿名数据分析,以帮助我们改进产品。我们收集使用分析和性能数据,但 绝不会 收集您的代码、项目名称