Token导航 LogoToken导航TokenDH.com
Unity Code Mode logo
AI代理未说明官方级别未说明来源级核验

Unity Code Mode

MCP Server

Code Mode for Unity 是一个将Unity编辑器转变为AI可控工具的服务,通过HTTP服务器暴露场景操作、资产管理等功能,使AI代理能够像开发者一样构建、检查和修改Unity项目。

工具数

24

提示词数

0

GitHub Stars

12

资源数

0
C#ClaudeAI代理Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

RomaRogov

提供方

RomaRogov

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Unity编辑器的代码模式

Unity的代码模式 将Unity编辑器变成AI可控工具。它在编辑器内运行一个HTTP服务器,通过以下方式将场景操作、资产管理和属性检查作为结构化工具调用公开 UTCP协议 -让AI代理以开发人员通过UI的方式构建、检查和修改Unity项目。 这些工具组合在一起 UTCP编码模式 环境,为AI代理实现最大的性能和令牌效率,让他们在隔离的JS沙箱中调用工具。

快速入门

  1. 安装扩展 在Unity项目中
  2. 整合 使用CodeMode MCP服务器进行扩展
  3. 为您的代理或用户设计一个系统提示 提供示例
  4. 请人工智能帮助你,看看它是如何学习的!

什么是代码模式?

与始终保持在LLM上下文中的严格MCP工具防御相反,CodeMode是一种帮助AI以最熟悉的方式调用工具的方法——通过基于TypeScript工具防御编写JavaScript代码。这有助于人工智能保持低令牌消耗,实现复杂任务的循环和链式调用,以紧凑的形式组织输出,并在一个JavaScript执行上下文中重用来自不同现有服务器和端点的输出,将LLM上下文与不必要的数据隔离开来。 这为不同环境之间的互动开辟了无限的可能性。以下是一些示例:

  1. 使用以下命令从混合器中移动场景 搅拌机MCP,将特定对象作为FBX直接导出到Unity项目中
  2. 使用 Figma MCP 从figma获取UI布局,并以智能的方式在项目中实现这些布局,而不是盲目地重新创建每个面板
  3. 使用 Cocos代码模式 在引擎之间执行游戏移植
  4. 带上你自己的例子🙃

所有这一切都可以通过UTCP团队提供的社区友好、灵活和开放的解决方案来实现: 代码模式 它是MCP服务器。 您可以在以下论文中阅读更多关于代码模式概念的信息: Anthropic, 苹果云耀.

工具

Tools <> UI Mapping

类别工具目的
场景GameObjectGetTree, GameObjectGetAtPath, GameObjectCreate, GameObjectCreatePrimitive, GameObjectOperate导航并构建场景层次结构
组件GameObjectComponentsGet, GameObjectComponentAdd, GameObjectComponentRemove, GameObjectGetAvailableComponentTypes连接、拆卸和查找组件
检查员InspectorGetInstanceDefinition, InspectorGetInstanceProperties, InspectorSetInstanceProperties内省类型和读/写属性
资产AssetGetTree, AssetGetAtPath, AssetCreate, AssetImport, AssetOperate, AssetGetPreview浏览、创建和管理项目资产
编辑EditorOperate, EditorGetLogs, EditorGetScenePreview控制编辑器状态和捕获预览
设置SettingsGetDefinition, SettingsGetProperties, SettingsSetProperties读取和修改项目设置

运作原理

此扩展架构遵循 发现,然后行动 图案。AI代理从不猜测属性名称或组件结构——它们首先查询真实的定义。

1. Get the scene tree         →  find the object you need
2. Get its type definition    →  learn its actual properties
3. Set properties by name     →  make precise changes

示例

// Find the camera
const tree = UnityEditor.GameObjectGetTree({});
const cameraTransform = tree.children[0].components[0]; // Transform ref

// Discover what properties Transform has
const def = UnityEditor.InspectorGetInstanceDefinition({ reference: cameraTransform });
// → "export class Transform { localPosition: Vector3; localRotation: Vector3; localScale: Vector3; }"

// Set multiple properties in one call
UnityEditor.InspectorSetInstanceProperties({
  reference: cameraTransform,
  propertyPaths: ["localPosition", "localRotation"],
  values: [{ x: 0, y: 5, z: -10 }, { x: 30, y: 0, z: 0 }]
});

技术实施细节

工具执行

HTTP请求在后台线程上到达。所有工具的执行都通过一个 EditorApplication.update 排队。

  • 即发即弃工具 (void/UniTask返回)--排队并返回 { success: true } 立即。来电者没有等待。
  • 价值回报工具 (T/UniTask\返回)-与完成源一起排队。HTTP响应会一直等待,直到工具在主线程上完成。

这意味着来自AI代理的链式调用不会阻止仅具有副作用的操作,如属性更改或编辑器命令。

工具声明

工具是标记为的纯静态方法 [UtcpTool]The ToolRegistry 在创业时通过Unity的 TypeCache,从它们的C#签名生成JSON模式,并在以下位置提供UTCP手册 /utcp 终点。

[UtcpTool("Get the hierarchy tree of a GameObject", httpMethod: "GET",
    tags: new[] { "scene", "hierarchy", "tree" })]
public static SceneTreeItem GameObjectGetTree(InstanceReference reference)
{
    // ...
}

两种输入模式:

  • 基于参数 --每个方法参数都成为一个输入字段
  • 基于类 --单身 UtcpInput-复杂输入的派生类

此刻 刀具输出 总是应该有class类型或void,也可以是 UniTaskUniTask 用于异步操作。

实例引用

对象 作为轻量级手柄传递:

{ id: "29880", type: "Camera" }

由树查询、组件查找和创建工具返回。它们在传递回时解析为Unity对象,通常使用 InstanceReference.Instance getter或with EditorUtility.InstanceIDToObject(id).

自定义AI代理编辑器

对于未经加工的组件 SerializedProperty 布局不能清晰地映射到AI代理应该看到的内容(RectTransform、Camera、AnimatorController等),代码模式提供了 AiAgentEditor 系统。

每位编辑都声明:

  • 启用时 --绑定序列化属性和注册处理程序
  • OnDump请求 --生成当前值的干净JSON快照
  • On Definition已请求 --发出TypeScript类定义

编辑器支持继承。例如, ColliderAgentEditor (base)处理常见的对撞机属性,如isTrigger或物理材料; BoxColliderAgentEditor 使用特定类型的属性对其进行扩展:

[CustomAiAgentEditor(typeof(BoxCollider))]
public class BoxColliderAgentEditor : ColliderAgentEditor
{
    private SerializedProperty m_Center;
    private SerializedProperty m_Size;

    protected override void OnEnable()
    {
        base.OnEnable();
        m_Center = serializedObject.FindProperty("m_Center");
        m_Size = serializedObject.FindProperty("m_Size");

        AddSettingPropertyHandler("center",
            () => m_Center.vector3Value.SerializeToJObject(),
            v => m_Center.vector3Value = v.DeserializeToVector3());

        AddSettingPropertyHandler("size",
            () => m_Size.vector3Value.SerializeToJObject(),
            v => m_Size.vector3Value = v.DeserializeToVector3());
    }

    protected override void OnDumpRequested()
    {
        base.OnDumpRequested();
        DumpProperty("center", m_Center.vector3Value.SerializeToJObject());
        DumpProperty("size", m_Size.vector3Value.SerializeToJObject());
    }

    protected override void OnDefinitionRequested()
    {
        base.OnDefinitionRequested();
        EmitClassDefinition("BoxCollider", new List
        {
            TsPropertyDef.Field("center", "Vector3"),
            TsPropertyDef.Field("size", "Vector3"),
        }, "Collider");
    }
}

没有自定义编辑器的组件会退回到自动序列化 SerializedObject.

安装

  1. 打开包管理器→ +从git URL添加包
  2. 输入: https://github.com/romarogov/unity-code-mode.git?path=Packages/com.roro.codemode

添加自定义工具

using CodeMode.Editor.Tools.Attributes;

public static class MyTools
{
    [UtcpTool("Describe what this tool does", httpMethod: "POST")]
    public static MyResult DoSomething(string input, int count = 10)
    {
        // Implementation — runs on main thread
    }
}

启动时会自动发现工具。无需注册。

UTCP呼叫模板配置

此扩展还有一个用于UTCP调用模板的特殊配置实用程序,可用于将不同的UTCP工具(包括MCP服务器!)连接到一个代码模式执行上下文中。 可从以下网址访问 Code Mode → UTCP Templates 菜单。

您可以在中找到呼叫模板结构 UTCP文件:

整合

代码模式适用于任何兼容UTCP的客户端,包括 代码模式MCP服务器 AI助手。

MCP服务器配置

此扩展提供了UTCP代码模式MCP服务器的集成配置示例,其中包含预填充的配置路径 Preferences → Code Mode 页面:

{
  "mcpServers": {
    "code-mode": {
      "command": "npx",
      "args": ["@utcp/code-mode-mcp"],
      "env": {
        "UTCP_CONFIG_FILE": "/path/to/.utcp_config.json"
      }
    }
  }
}

Claude代码配置

要设置Claude Code代理以使用代码模式,请打开项目并运行以下命令:

Linux/MacOS:

claude mcp add --transport stdio --env UTCP_CONFIG_FILE="/path/to/.utcp_config.json" -- code-mode npx @utcp/code-mode-mcp

窗户:

claude mcp add --transport stdio --env UTCP_CONFIG_FILE="/path/to/.utcp_config.json" -- code-mode cmd /c npx @utcp/code-mode-mcp

目录标签

目录标签

C#ClaudeAI代理AI工具本地部署Unity插件场景管理资产管理

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

24

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP