unity-cli

June 26, 2026 · View on GitHub

unity-cli

Unity Editor 的 AI 编程代理 skill — 适用于任何兼容 skills 的 Agent(Claude Code、Codex 等)
基于 unity-csharpconsole

License Unity Claude Code

40+ 命令覆盖场景编辑、组件、资产、截图、性能分析等。
依赖 unity-csharpconsole — 基于 Roslyn 的 Unity 交互式 C# REPL。

快速开始 · 使用方式 · 命令 · 自定义命令 · 架构

English | 中文


你:     "创建 10 个 Cube 围成一圈,每个加上 Rigidbody"
Claude:  完成。10 个 Cube 已在半径 5 处创建,均已添加 Rigidbody 组件。

⚡ CLI + Skill

通过 Agent 的 Skill 体系暴露 CLI 命令。

  • 省 token。 Skill 按需加载。
  • 无限制。 可回退到完整的 Roslyn C# REPL —— 不受预定义工具限制。
  • 无需额外进程。 服务运行在 Unity Editor 进程内,零额外基础设施。
  • 感知工作流。 理解 Unity 的编译生命周期、Play Mode、域重载。
  • 自定义命令自动发现。 用户定义的 C# 命令会自动同步到 Skill 目录。
  • 运行时 / IL2CPP 支持。 配合 HybridCLR 可在运行时构建中使用。
  • 自我进化的代码片段库 — 项目本地 C# 片段(.md 文件,不参与编译),带验证门、使用频次跟踪、自动老化。通过 cs snippets 子命令发现和演化。

🚀 快速开始

Important

安装范围 = 这个 Unity 项目,不是全局,不要装到用户主目录 / 全局 skills 目录。skill 内置的 CLI 通过从自身文件位置向上查找来定位 Unity 项目,只有装在项目内才能可靠定位;装到主 目录 / 全局目录则处在所有项目之外,永远找不到。

1 · 安装 unity-cli skill:

cd path/to/your/UnityProject      # 在项目里执行,不要在主目录 / 全局目录
npx skills add niqibiao/unity-cli-skill --copy

2 · 初始化:

在 AI Agent 里运行 unity-cli setup

前置条件: 一个兼容 skills 的 Agent(如 Claude CodeCodex CLI 0.139+)、Node.js(用于 npx)、Unity 2022.3+、Python 3.7+

💬 使用方式

直接告诉 Claude 你想做什么:

> 在场景里添加一个方向光,X 轴旋转 45 度
> 找出所有标签为 "Enemy" 的对象,列出它们的组件
> 截取 Scene View 的截图
> 开始 Profiler 录制,启用深度分析

Claude 会自动选择合适的命令,或在需要时编写 C# 代码。

🧩 一个 skill,多个子命令

所有功能都在一个 skillunity-cli)里;它的 cs 子命令覆盖全部操作,Agent 会自动触发 (任何兼容 skills 的 Agent 通用):

子命令说明
cs setup安装包到 manifest(已安装则做版本校验)
cs status / cs health包与服务状态
cs command --input结构化 Unity 编辑器命令
cs exec在编辑器中执行原始 C#(兜底)
cs refresh触发资产刷新 / 重编译
cs catalog sync / cs list-commands自定义命令目录 + 维护者审计
cs snippets …可复用 C# 片段库
cs snippets doctor片段库健康审计

📦 命令

13 个命名空间、50 个内置命令。所有命令支持 --json 输出。

gameobject

Action说明
find按名称、标签或组件类型查找 GameObject
create创建新 GameObject(空对象或基本体)
destroy销毁 GameObject
get获取 GameObject 详细信息
modify修改名称、标签、层、激活状态或静态标记
set_parent设置父对象
duplicate复制 GameObject

component

Action说明
add为 GameObject 添加组件
remove移除组件
get获取组件的序列化字段数据
modify修改组件的序列化字段

transform

Action说明
get获取位置、旋转和缩放
set设置位置、旋转和/或缩放(本地或世界坐标)

scene

Action说明
hierarchy获取完整场景层级树,可选包含组件信息

prefab

Action说明
create从场景中的 GameObject 创建 Prefab 资产
instantiate将 Prefab 实例化到当前场景
unpack解包 Prefab 实例

material

Action说明
create创建新材质(指定 Shader)
get获取材质属性
assign将材质分配给 Renderer 组件

screenshot

Action说明
scene_view截取 Scene View 到图片文件
game_view截取 Game View 到图片文件

profiler

Action说明
start开始 Profiler 录制(可选深度分析)
stop停止 Profiler 录制
status获取当前 Profiler 状态
save保存录制数据到 .raw 文件

editor

Action说明
status获取编辑器状态和 Play Mode 信息
playmode.status获取当前 Play Mode 状态
playmode.enter进入 Play Mode
playmode.exit退出 Play Mode
menu.open按路径执行菜单项
window.open按类型名打开编辑器窗口
console.clear清空编辑器控制台
console.mark向编辑器日志写入可搜索标记

asset

Action说明
move移动或重命名资产
copy将资产复制到新路径
delete删除一个或多个资产
create_folder在 Asset Database 创建文件夹

project

Action说明
scene.list列出项目中所有场景
scene.open按路径打开场景
scene.save保存当前场景
selection.get获取当前编辑器选中对象
selection.set设置编辑器选中对象
asset.list按类型筛选列出资产
asset.import按路径导入资产
asset.reimport按路径重新导入资产

session

Action说明
list列出活跃的 REPL 会话
inspect查看会话状态
reset重置会话的编译器和执行器

command

Action说明
list列出所有已注册命令(内置 + 自定义)

snippets

Action说明
list浏览本地代码片段库
show查看片段的完整内容和元数据
search按关键词搜索片段
use运行片段(执行其 C# 代码)
add向片段库添加新片段
update更新已有片段
deprecate将片段标记为已废弃
prune移除已老化或废弃的片段
stats查看片段库的使用统计

🔧 自定义命令

支持自定义命令。定义和注册方式请参考 unity-csharpconsole

本 skill 为每个 Unity 项目维护一份持久化的自定义命令目录。运行 cs catalog sync 可从 Unity 拉取最新命令列表并缓存到磁盘;运行 cs catalog list 可在不连接编辑器的情况下离线查看已缓存的目录。

🏗️ 架构

AI Agent                         Unity Editor
┌──────────────────┐            ┌──────────────────────────┐
│  Skills          │            │  com.zh1zh1.csharpconsole│
│  ┌────────────┐  │            │  ┌────────────────────┐  │
│  │ cli-command│──┼── HTTP ──▶ │  │ ConsoleHttpService │  │
│  │ cli-exec   │  │            │  │  ├─ CommandRouter  │  │
│  └────────────┘  │            │  │  ├─ REPL 编译器     │  │
│                  │            │  │  └─ REPL 执行器     │  │
│  Python CLI      │            │  └────────────────────┘  │
│  ┌────────────┐  │            │                          │
│  │ cs.py      │  │            │  40+ CommandActions      │
│  │ core_bridge│  │            │  (GameObject, Component, │
│  └────────────┘  │            │   Prefab, Material, ...) │
└──────────────────┘            └──────────────────────────┘
  • Skill 层:你的 Agent 调用的 unity-cli skill
  • CLI 层:Python 调度器,将请求序列化为 JSON
  • Unity 层unity-csharpconsole — HTTP 服务,自动发现命令处理器,Roslyn C# REPL

自动检测项目根目录和服务端口,无需手动配置。

❓ 常见问题

问题解决方案
service: UNREACHABLE确保 Unity 编辑器已打开并加载了项目
package: NOT FOUND运行 cs setup 添加包,再打开 Unity 解析它
端口冲突服务会自动切换到下一个可用端口,查看 Temp/CSharpConsole/refresh_state.json
找不到命令确保包编译成功(Unity Console 中无报错)
版本不匹配运行 cs status 查看版本;把 Unity 包对齐到 CLI 的 major.minor

License

Apache-2.0


如果这个 skill 对你有帮助,请给个 Star,让更多人发现它。