← 返回博客
Apr 21, 2026指南作者 Funplay AI

Funplay Unity MCP 的 execute_code 工具深度解析与实战技巧

Funplay Unity MCP 的 execute_code 是整个 79 工具集中最灵活的一件,允许 AI 编程助手在 Unity 编辑器内直接运行任意 C# 代码。它不是又一个"狭义工具",而是官方定位中的"primary execution tool"——当场景编辑、脚本生成、运行时验证等专用工具都不顺手时,一段 C# 片段就能把事做完。

execute_code 在工具体系中的位置

Funplay Unity MCP 当前版本 0.1.10,MIT 许可,MCP 服务默认监听 http://127.0.0.1:8765/。工具被拆成两个 profile:core 暴露 19 个高频工具,full 暴露全部 79 个。execute_code 在两个 profile 里都存在,是 AI 客户端与 Unity 之间"兜底"的通用通道。这种设计避免了为每种操作都写一个独立工具的爆炸式增长——那样会让 AI 客户端的工具列表失去信号。

典型使用场景

以下场景是官方定位里明确覆盖的:

  • 场景构建:一句提示让 AI 创建 10×10 网格、生成带刚体的玩家、挂脚本——execute_code 可以把 GameObject.CreatePrimitiveAddComponent<Rigidbody>、脚本编译和挂载串在同一次调用里。
  • 运行时验证:进入 Play 模式后用 execute_code 查询 Scene、读取 Log、断言数值,然后配合 exit_play_mode 退出,完成一个自动化测试闭环。
  • 批量编辑器自动化:批量重命名资源、自动设置材质、打包前置处理——这些在 19 个 core 工具里没有对应项,但用 execute_code 一段代码即可。

一个可运行的示例

// 在当前场景根节点下创建 10 个随机位置的敌人
for (int i = 0; i < 10; i++) {
    var go = GameObject.CreatePrimitive(PrimitiveType.Cube);
    go.name = $"Enemy_{i}";
    go.transform.position = new Vector3(
        Random.Range(-5f, 5f), 0, Random.Range(-5f, 5f));
    go.AddComponent<Rigidbody>();
}

配合 request_recompilewait_for_compilation 可以确保外部编辑的脚本编译完成后再继续操作,避免 domain reload 期间的状态丢失。

使用时的注意点

execute_code 的灵活性是双刃剑。一段错误的 C# 会直接影响 Unity 编辑器状态——删错对象、写坏 prefab、污染 Assets 目录都有可能。建议把重的批量操作放到 Editor 子目录下的脚本文件里调用,而不是塞进 execute_code 的一次性字符串里。另外它不是沙箱:System.IO、反射、P/Invoke 都能用,敏感项目请先备份。

接入与延伸

打开 Window → Package Manager → Add from git URL 粘贴 https://github.com/FunplayAI/funplay-unity-mcp.git 完成安装。更多 MCP 家族成员参见 funplay-godot-mcpfunplay-cocos-mcpfunplay-skill。最新文章汇总在 gamebooom.ai/zh/blog/

继续阅读

在你的项目里试试。四个仓库都在 github.com/FunplayAI——挑你在用的引擎,看对应 README。
Funplay Unity MCP 的 execute_code 工具深度解析与实战技巧 | funplay mcp