使用说明
项目简介
YetAnotherUnityMcp 是一个使用 Model Context Protocol (MCP) 连接 Unity 游戏引擎和 AI 工具的系统。它包含一个 Unity .NET/C# 插件(MCP 客户端)和一个 Python MCP 服务器(使用 FastMCP 构建)。Unity 和服务器之间通过 WebSockets 进行通信,实现 JSON 消息和图像数据的实时双向交换。该项目旨在让 AI agent(例如 LLM 助手)以结构化和安全的方式检查和控制正在运行的 Unity 场景。
主要功能点
- 资源管理: 通过 MCP 资源 (Resources) 向 LLM 提供 Unity 编辑器状态和场景信息,例如场景层级结构、对象属性和编辑器日志。
- 工具注册与执行: 注册并执行 MCP 工具 (Tools),允许 LLM 调用 Unity 编辑器的功能,例如:
- 执行 C# 代码:在 Unity 编辑器中远程执行 C# 代码。
- 屏幕截图:控制 Unity 编辑器截屏,并可指定分辨率和输出路径。
- 对象属性修改:远程修改 Unity 场景中 GameObject 的属性。
- 获取日志:获取 Unity 编辑器的日志信息。
- 获取 Unity 信息:获取 Unity 版本、平台、项目名称等信息。
- Prompt 模板: 提供 Prompt 模板 (Prompts) 用于定义与 Unity 交互的模式,例如创建 GameObject 和诊断错误。
- 实时通信: 使用 WebSocket 进行实时双向通信,保证低延迟和持久连接。
- 本地回退: 在服务器不可用时,Unity 插件支持本地命令执行作为回退方案。
安装步骤
-
服务器端安装 (Python)
打开终端,按照以下步骤操作:
# 克隆仓库 git clone https://github.com/Azreal42/YetAnotherUnityMcp.git cd YetAnotherUnityMcp # 创建并激活虚拟环境 (推荐使用 Python 3.11) uv venv -p 3.11 source .venv/bin/activate # 或 .venv\Scripts\activate (Windows) # 安装服务器依赖 uv pip install -e ".[dev]" -
启动 MCP 服务器
运行以下命令启动 WebSocket MCP 服务器:
python -m server.websocket_mcp_server服务器默认监听 'ws://localhost:8080/ws'。
-
Unity 插件安装
打开你的 Unity 工程 (Unity 2020.3 或更高版本),选择以下任一方式导入插件:
- 复制文件夹: 将仓库 'plugin/Scripts' 文件夹复制到 Unity 项目的 'Assets' 目录下。
- 导入 Unity Package: 创建 Unity Package 并导入。
- 创建符号链接: 使用符号链接 (Symbolic Link) 进行开发 (参考 README.md)。
-
配置 Unity 插件
- 在 Unity 场景中创建一个空 GameObject。
- 为该 GameObject 添加 'MCPClient' 组件 (路径: 'Scripts/Editor')。
- 在 'MCPClient' 组件的 Inspector 面板中,配置 Server URL 为 MCP 服务器的 WebSocket 地址 ('ws://localhost:8080/ws' 或根据实际情况修改)。
-
打开 MCP 编辑器窗口
在 Unity 编辑器菜单栏中,选择 'Window > WebSocket MCP Client' 打开 WebSocket MCP 客户端窗口。
-
连接服务器并测试
在 WebSocket MCP 客户端窗口中,点击 "Connect" 按钮连接到 MCP 服务器。连接成功后,可以测试各项 MCP 功能,例如执行代码、截屏、修改对象属性、获取日志和 Unity 信息。
服务器配置
MCP 服务器端 (Python) 启动命令为:
{ "server name": "Unity MCP WebSocket Server", "command": "python", "args": ["-m", "server.websocket_mcp_server"] }
基本使用方法
- 确保 MCP 服务器已启动并运行。
- 在 Unity 编辑器中打开 WebSocket MCP 客户端窗口 ('Window > WebSocket MCP Client')。
- 配置正确的服务器 URL 并点击 "Connect" 连接服务器。
- 使用客户端窗口中的各项功能按钮和输入框,例如:
- 在 "Execute Code" 区域输入 C# 代码,点击 "Execute" 执行代码。
- 在 "Take Screenshot" 区域配置截图路径和分辨率,点击 "Take Screenshot" 截取屏幕。
- 在 "Modify Object" 区域输入 GameObject ID、属性路径和属性值,点击 "Modify" 修改对象属性。
- 点击 "Get Unity Info" 和 "Get Logs" 按钮获取 Unity 信息和日志。
- 查看 "Result" 区域显示的操作结果。
信息
分类
开发者工具