Unity 也出 CLI 了:装编辑器、跑测试都能用命令
Unity 推出独立命令行工具,安装 Editor、管理项目、运行测试和自动构建都能进入脚本与 CI。这里给出一条可复现的上手路线,也讲清适合谁和当前 Beta 的边界。

Unity 终于有了一个像样的官方命令行入口。
过去想在终端里管理 Unity,常见做法是调用 Hub 的 headless 模式,命令长,启动重,也不太适合频繁执行。现在 Unity CLI 被做成了独立的 unity 程序,不装 Hub 也能管理 Editor 、模块、项目、登录、许可证、测试和构建。
它目前仍是 experimental Beta 。截至 2026 年 7 月 22 日,官方 Beta 清单里的版本是 1.0.0-beta.2。命令还可能调整,实际使用时以本机 unity --help 为准。
它解决了哪些痛点
第一类痛点是构建机太难配。以前给一台新的 CI Worker 准备 Unity,往往要处理 Hub 、 Editor 、目标平台模块、许可证和项目路径。现在这些动作可以收进同一份脚本,机器坏了就重建,不必留一台“谁也不敢动”的神秘电脑。
第二类痛点是团队环境不一致。有人装 LTS,有人装错补丁版本,Android SDK 、 NDK 和 WebGL 模块也经常缺。 CLI 可以锁定 Editor 版本和模块,让本地开发与 CI 使用同一套声明。
第三类痛点是自动化结果难判断。 Unity CLI 支持 JSON 、 TSV 和 NDJSON,数据走 stdout,诊断走 stderr,还有明确退出码。 CI 或 AI 编程助手不必盯着一长串人类日志猜任务成没成功。

官方还给 Unity 6 增加了 com.unity.pipeline。装进项目后,CLI 可以控制正在运行的 Editor,读取状态、调用项目暴露的命令,也可以临时执行 C# 。这让“修改—运行—检查结果”的循环更短,不过它同样意味着很强的本机执行权限。
一条可以照着走的上手路线
1. 安装 Unity CLI
macOS 或 Linux:
curl -fsSL https://public-cdn.cloud.unity3d.com/hub/prod/cli/install.sh \
| UNITY_CLI_CHANNEL=beta bash
Windows PowerShell:
$env:UNITY_CLI_CHANNEL='beta'; irm https://public-cdn.cloud.unity3d.com/hub/prod/cli/install.ps1 | iex
安装脚本会校验 SHA-256 。对生产构建机,建议先下载并审阅脚本,再执行。随后检查版本和环境:
unity --version
unity --help
unity doctor
2. 安装 Editor 和平台模块
安装最新 LTS:
unity install lts
安装指定版本,并补齐 Android 模块及其子模块:
unity install 6000.3.7f1 -m android --cm
放进 CI 前先预演:
unity install lts -m android --cm --dry-run
无人值守安装可以加上:
unity install 6000.3.7f1 \
-m android webgl \
--accept-eula \
--yes \
--non-interactive
查询已经安装的 Editor 与可用模块:
unity editors --installed
unity modules list 6000.3.7f1
3. 创建并打开项目
先查看模板:
unity templates list
用 3D 模板创建项目:
unity projects new MyGame \
--editor-version lts \
--template com.unity.template.3d \
--path ~/UnityProjects \
--json
已有项目可以登记并打开:
unity projects add /path/to/MyGame
unity open /path/to/MyGame
CLI 会读取 ProjectSettings/ProjectVersion.txt,选择项目需要的 Editor 。也可以用 --editor-version 手动覆盖。
4. 运行测试
unity test ./MyGame --mode EditMode
unity test ./MyGame --mode PlayMode --output ./results/play.xml
支持 EditMode 、 PlayMode 、测试过滤和 NUnit XML 报告。测试执行完成但存在失败项时,当前版本会返回退出码 6,CI 可以据此直接阻止合并或发布。
5. 执行构建
unity build ./MyGame \
--target Android \
--execute-method Builder.AndroidBuild \
--output-path ./out/app.apk
这里有个容易踩的坑:Unity 没有提供适用于所有项目的通用构建方法,项目里仍要准备一个静态 C# 入口,例如 Builder.AndroidBuild,由它调用 BuildPipeline.BuildPlayer。 CLI 负责选 Editor 、启动 batch mode 、传入参数并返回结果。
缺少对应 Editor 时,可以显式允许自动安装:
unity build ./MyGame \
--target WebGL \
--execute-method Builder.WebGLBuild \
--allow-install
控制正在运行的 Editor

项目使用 Unity 6 或更新版本时,可以安装 Pipeline 包:
unity auth login
unity pipeline install
unity pipeline list
列出当前 Editor 暴露的命令:
unity command
读取 Unity 版本或播放状态:
unity command eval "return Application.version;"
unity command eval "return UnityEditor.EditorApplication.isPlaying;"
项目还可以通过 [CliCommand] 把自定义静态 C# 方法开放给脚本、 CI 或 Agent 。官方 Pipeline 服务只绑定本机地址,请求需要启动时生成的 token;但 eval 能访问 Unity 和 Editor API,依然应该按本机代码执行权限管理。描述文件和 token 不要共享,开发版 Player 的远程控制也不要带进正式发行包。
适合谁
它最适合维护 CI/CD 、自动打包和多平台构建的团队。 Editor 与模块安装可以写进脚本,构建环境更容易复制和重建。
经常切换项目和 Unity 版本的个人开发者也会受益。创建项目、查模板、装模块和打开工程都能在终端完成,常用动作还能配合 shell 补全。
工具链工程师、技术美术和 QA 可以把重复检查封装成项目命令。 AI 编程助手也能借助结构化输出与 Pipeline 完成“操作 Editor—读取状态—继续修改”的循环。
如果只是偶尔打开 Unity 做一个小项目,Hub 和图形界面已经够用,CLI 带来的收益不会太大。团队还没有自动测试或固定构建入口时,也应先把工程流程整理好,再接入命令行。
现在该不该用
可以先用在低风险环节:查询版本、安装 Editor 、创建临时项目、跑测试,再逐步接入正式构建。版本仍处于 Beta,脚本里应锁定 CLI 和 Editor 版本,并保留 unity --help、日志和退出码作为排错依据。
真正要谨慎的是凭据与许可证。 Service Account secret 、 Git token 、 Android keystore 和密码不要直接写进命令参数或仓库;优先走 stdin 、 CI Secret 和日志脱敏。 Unity CLI 让游戏开发流程更容易自动化,也把原本藏在界面里的权限暴露到了脚本里。
你最想先把 Unity 的哪个步骤搬进终端:装环境、跑测试,还是自动出包?