详细介绍
UnityMCP 是一款基于 WebSocket 的 Unity 编辑器插件,通过 Model Context Protocol (MCP) 实现与 AI 助手的实时通信。该插件支持 Unity 编辑器状态的实时监控、远程执行 C# 命令以及日志管理,适用于需要自动化开发流程、增强协作效率和 AI 辅助设计的场景。
核心功能
UnityMCP 提供了以下核心功能,帮助开发者更高效地与 Unity 编辑器进行交互:
- 实时编辑器状态监控:通过 WebSocket 实时获取 Unity 编辑器的当前状态,包括活动的游戏对象、选择状态、播放模式等。
- 远程命令执行:允许在 Unity 编辑器中远程执行 C# 代码,访问 UnityEngine 和 UnityEditor API,实现自动化操作。
- 日志管理:收集并过滤 Unity 编辑器中的日志,支持按类型、内容和时间进行筛选,便于调试和优化。
安装方法
UnityMCP 的安装分为两部分:插件安装和服务器配置。
插件安装
将 UnityMCP 文件夹放入 Unity 项目中,并在 Unity 编辑器中导入该文件夹以完成插件安装。
服务器配置
确保已安装 Node.js 和 npm,然后在项目目录下运行以下命令:
npm install使用方法
使用 UnityMCP 需要启动服务器并在 Unity 编辑器中配置插件。
启动服务器
在命令行中运行以下命令启动 MCP 服务器:
node server.js配置 Unity 插件
在 Unity 编辑器中执行以下步骤:
- 打开 Unity 编辑器。
- 在
Assets/Editor文件夹中添加MCPManager.cs脚本。 - 将脚本附加到任意空物体上。
- 配置 WebSocket 服务器地址(默认为
ws://localhost:8080)。
使用示例
以下是两个典型的使用示例,展示如何通过 UnityMCP 执行远程命令。
示例一:将选中对象位置重置为原点
Selection.activeGameObject.transform.position = Vector3.zero;该命令将当前选中的游戏对象位置设置为 (0, 0, 0)。
示例二:切换播放模式
EditorApplication.isPlaying = !EditorApplication.isPlaying;该命令用于切换 Unity 编辑器的播放模式状态。
技术细节
UnityMCP 使用 WebSocket 实现双向实时通信,所有消息均采用 JSON 格式传输。
- 传输方式:WebSocket
- 端口号:默认为 8080
- 消息格式:JSON
错误处理与安全机制
UnityMCP 提供了全面的错误处理机制,包括:
- 连接中断处理
- 命令执行失败处理
- 编译错误处理
- 运行时异常处理
- 命令超时保护
此外,系统还提供日志记录和缓冲功能,确保通信的稳定性和安全性。
适用场景
UnityMCP 适用于以下场景:
- 需要自动化开发流程的团队
- 希望提升协作效率的多人开发环境
- 需要 AI 辅助设计的游戏开发项目
- 需要实时监控和远程控制 Unity 编辑器的场景
UnityMCP 通过实时通信和远程控制功能,为 Unity 开发者提供了强大的工具支持,显著提升了开发效率和协作能力。