← 返回全部文章

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 的哪个步骤搬进终端:装环境、跑测试,还是自动出包?

来源:https://unity.com/blog/meet-the-unity-cli