Unity_Ops:通过 TCP 让 Agent 远程操控 Unity 编辑器

前言

在 Unity 里改场景、摆模型、存盘、截图,通常要人手点菜单或写 Editor 脚本。若希望对话式 Agent 直接驱动编辑器——例如「在 Unity 里新建场景并放一个球」——就需要编辑器侧常驻服务,并能用统一协议收指令。下面介绍 SkillHub 上的 Unity_Ops(坐标 @user_2bb7cf23/unity-ops):在本地通过 TCP 向 Unity 发送 JSON 指令,完成场景、模型、截图与资产刷新等操作;内置命令不够时,还可在工程内按扩展指南新增 C# 命令。

这是什么

Unity_Ops 是面向 AI Agent 的社区 Skill(分类 ai-agent,版本 1.0.0,标签 requires_api_key=false)。它把 Agent 与 Unity 编辑器之间的交互固定为:本机 TCP Socket(默认 127.0.0.1:8888)+ UTF-8 JSON,由 Unity 工程内的 Editor 脚本监听并执行。Skill 会把 UnityOpsListener.cs、CoreOperations.cs 同步到工程的 Assets/Editor/UnityOps/,无需 API Key。

官方页面:SkillHub - unity-ops
API 入口:https://api.skillhub.cn/user_2bb7cf23/unity-ops

核心功能

以下能力均来自官方文档中的命令表;请求 JSON 需包含 action 字段,响应为 JSON,status 为 "success" 或 "error"。

场景操作

命令 功能 说明
SaveScene 保存当前场景 可指定场景名,未命名时自动生成
NewScene 新建场景 无参数
LoadScene 加载场景 需提供场景名或 Assets 路径

模型操作

命令 功能 说明
CreateModel 创建基本几何体 Cube / Sphere / Cylinder / Capsule / Plane;可设位置、旋转、缩放
DeleteObject 删除场景对象 按名称删除,可选是否同时删除子对象
PlaceAsset 放置 FBX/Prefab 需提供资产路径,支持位置/旋转/缩放

截图

命令 功能 说明
CaptureScreenshot 渲染并保存场景截图 等距/俯视/正视等视角预设,可自定义分辨率、FOV、相机位置

辅助与扩展

  • RefreshAssets:触发 AssetDatabase.Refresh()。
  • GetAssetPath:返回 Assets 与项目根目录的绝对路径。
  • Manual:返回 Markdown 格式的完整 API 手册。

当内置命令不满足需求时,Agent 可按 Skill 中的扩展指南,在 Assets/Editor/UnityOps/ 下新建独立 CS 文件实现自定义操作(Skill 自带的 UnityOpsListener.cs、CoreOperations.cs 禁止修改,仅允许从 Skill 单向复制到工程)。

安装与启用

在 Agent 侧安装 Skill

从 SkillHub 安装坐标 @user_2bb7cf23/unity-ops(具体命令以你所用的 Cursor / Codex CLI / Claude Code 的 Skill 安装方式为准;官方资料未区分各客户端差异时,以 SkillHub 页面说明为准)。

Unity 工程侧准备

  1. 将 Skill 中的 UnityOpsListener.cs、CoreOperations.cs 放到工程的 Assets/Editor/UnityOps/。
  2. 满足系统要求:官方写明在 Unity 2022.3.62 与 KnotClaw 下测试通过;进程检测与端口轮询依赖 Windows + PowerShell。

方式一:自动启动(推荐)

  1. 在对话中提到「在 Unity 中 …」「使用 UnityOps」等,触发 Skill。
  2. Skill 会检查 Unity 是否已打开、端口 8888 是否有 UnityOps 服务,并同步 CS 脚本到工程。
  3. 若 Unity 未运行或服务未起,可自动启动 Unity 并附带 -startServer -port 8888,使服务就绪。
  4. 通过 TCP 发送 JSON 执行操作。

方式二:在 Unity 菜单手动开启

Unity 已打开但服务未运行时:

  1. 确认上述 CS 脚本已在 Assets/Editor/UnityOps/。
  2. 菜单 Tools → UnityOpsListener,在窗口中点击 「启动服务器」。
  3. 默认监听 8888;可用命令行 -port 修改。控制台出现 Server started on port xxx 即表示就绪。

通信摘要:

协议:TCP,默认 127.0.0.1:8888
请求:UTF-8 JSON,含 action 字段
响应:JSON,status 为 success 或 error

典型用法

官方未给出完整 JSON 样例时,可按协议自行构造。逻辑上例如:

  1. 触发 Skill 或确认 8888 服务已启动。
  2. 发送 action 为 NewScene 的请求新建场景。
  3. 发送 CreateModel,指定几何体类型(如 Sphere)及变换。
  4. 发送 SaveScene 保存;需要预览时发送 CaptureScreenshot。
  5. 导入新资源后发送 RefreshAssets;路径不确定时先 GetAssetPath 或 Manual 查文档。

Agent 也可先调用 Manual 拉取 Markdown API,再按字段拼 JSON。

适用场景与注意

适合:

  • 在 Unity 场景中创建、移动、删除 3D 对象(内置几何体或 Prefab/FBX)。
  • 保存、新建、切换场景。
  • 渲染场景快照。
  • 从 Agent 发指令控制 Unity 编辑器;对话中出现 UnityOps、Unity Editor 操作,或「在 Unity 中 …」类表述时,Skill 设计为可触发。

限制与注意:

  • 默认仅本机 TCP,需自行评估是否暴露端口;官方强调 CS 核心文件不可改,扩展只能新增文件。
  • Windows 环境下的自动检测与启动脚本,在其他 OS 上需自行验证。
  • SkillHub 页面显示评分为 100000、下载约 899(以页面为准,会随时间变化)。

结尾

Unity_Ops 把 Unity 编辑器能力收成一套 TCP + JSON 命令,适合让 Agent 在本地工程里做场景与资产层面的自动化;复杂逻辑可走扩展 C# 命令。安装与文档入口:https://www.skillhub.cn/skills/user_2bb7cf23/unity-ops

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜