文章

迎接 Unity CLI:从您的终端管理 Unity

ETIENNE WHITTOM / UNITY TECHNOLOGIESVP, Authoring Platform
Jul 20, 2026
Unity CLI
为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。

TL;DR

  • 现在可用Unity CLI 是一个独立的 Unity 二进制文件,用于管理和与来自终端的编辑器、模块、项目和身份验证交互。不需要用户界面;通过命令行安装。
  • 为自动化而构建:结构化的JSON/TSV输出、清晰的退出代码、非交互式下载量和CI的服务帐户身份验证。
  • 今天也提供了:实验性的 com. Unity.pipeline 包让 CLI 在本地 API 上驱动正在运行的编辑器或开发播放器构建。您可以使用 [CliCommand] 属性公开自己的命令。
  • Unity 命令 eval 在运行编辑器或 Player 中实时运行 C# 代码并返回结果,无需项目级重新编译或域重新加载。
  • 它们一起允许人工智能代理操作 Unity:观察一个实时项目,对其采取行动,并验证结果。

越来越多的开发发生在终端上:脚本、CI、以及越来越多的人工智能代理。今天Unity在那里遇见你。Unity CLI 将 Unity 带到了各个级别的终端:用一个二进制文件安装和管理编辑器,从脚本驱动正在运行的编辑器,甚至无需重新编译即可在项目内执行实时 C#。它是一个单一、快速的 Unity 命令,每一层都比最后一层更进一步:CLI 管理 Unity,管道包驱动 Unity,eval 深入其中。CLI 和管道软件包现在都可用。

在深入探讨之前,让我们先来看看这些功能组合在一起时可能实现的功能:

在这段25秒的剪辑中,개발자递给人工智能特工一份纯英文的bug报告 : " 玩家有时会从地板上掉下来 。 "代理使用 Unity 命令 eval <code> 检查现场,在运行时发现禁用了碰撞器,重新启用它,并重新进入 Play 模式以确认修复,观察正在运行的游戏,对其执行操作,并验证结果本身,控制台输出没有复制粘贴。

什么是 Unity CLI

CLI 以单个自包含二进制文件的形式提供。没有需要安装的依赖项,安装会将其自身添加到 PATH 中:只需以 Unity 身份运行它,然后使用 Unity 升级就地更新它。除了编辑器和项目之外,它还处理模块和 Authentication,因此新机器不需要其他东西。

因为它是本机二进制文件,启动很快,而旧的 Unity Hub 无头路径( -- -headless)花费的时间明显更长。此差距加起来跨越脚本或代理每个作业发出的数十个呼叫。

开始使用

使用您平台的软件包管理器安装它:

# macOS or Linux
curl -fsSL https://public-cdn.cloud.unity3d.com/hub/prod/cli/install.sh | UNITY_CLI_CHANNEL=beta bash

# Windows
$env:UNITY_CLI_CHANNEL='beta'; irm https://public-cdn.cloud.unity3d.com/hub/prod/cli/install.ps1 | iex

(注:对brew、winget和apt等标准软件包管理器的支持即将到来。请参阅 CLI 文档以了解最新信息。)

探索可用的功能:

unity --help

安装一个包含您需要的模块的编辑器是一个单行:

unity install 6000.2.10f1 -m android ios webgl

从那里,命令以您期望的方式读取:Unity 编辑器查看已安装的内容,Unity 打开以启动具有正确编辑器的项目,以及 Unity 身份验证登录以登录。不确定某个版本包含哪些模块 ID? Unity 模块列表 6000.2.10f1 已涵盖。

专为自动化而构建

CLI 的构建是为了生活在自动化内部,而不仅仅是一个交互式外壳。每个命令都可以发出结构化输出,您可以直接将输出管插入工具:

unity editors --format json
unity editors --format tsv

错误转到stderr,结果转到stdout,退出代码遵循一个简单的约定(0成功,1错误,130取消),因此,在管道中很容易捕获失败。

对于无人值守的下载量,请跳过每个提示:

unity install 6000.2.10f1 -m android ios --accept-eula --yes

在无头构建代理上,它通过环境变量使用服务帐户进行身份验证。无需浏览器,无需手动步骤。和 Unity 医生诊断环境、凭据和配置问题。

与编辑交谈

管理下载量只是问题的一半。Unity CLI 还可以驱动运行中的编辑器。

一旦添加到项目中,com. Unity.pipeline 可以让正在运行的编辑器完全在您的计算机上接收来自 CLI 的命令。它可与 Unity 6.0 LTS 及更新版本配合使用,并将编辑器变为脚本、配置项作业和代理工具的可编程自动化目标。

将其添加到项目中是一条命令:

unity pipeline install

您可以检查哪些项目安装了 Unity 管道列表。有了软件包,您可以直接从终端对连接的编辑器(甚至 Player 运行时)执行注册命令:

# List the commands a connected Editor exposes
unity command

# Run one of them
unity command <command-name>

这些命令不是固定的通过添加 [CliCommand] 属性,项目中的任何静态方法都变为一个,其参数上带有 [CliArg]:

using Unity.Pipeline.Commands;
using UnityEngine;

public static class MyPipelineCommands
{
    [CliCommand("greet", "Log a greeting and return its length")]
    public static int Greet(
        [CliArg("name", "Who to greet", Required = true)] string name)
    {
        Debug.Log($"Hello, {name}!");
        return name.Length;
    }
}

软件包会自动发现它,无需注册步骤。 Unity 命令 greet - - name World 针对连接的编辑器运行它,并将结果交回。

管道软件包今天提供。它目前正在实验中,所以期待它的发展。它可以让你在编辑器中自动执行以前需要人工完成的任务:触发导入、运行测试、自定义工具。

它不会止步于编辑。将其运行时组件放入开发构建中,您运行的游戏会公开相同的 API。使用 - -runtime 命令将 CLI 指向它,以提取实时日志、查询运行时状态或在已在播放的构建中热重新加载代码。默认情况下,它只支持localhost并且是关闭的(对于开发和QA构建,从来不支持生产 ) , 但是它将正在运行的Player变成了脚本、测试设备或AI代理可以在实时运行时分层驱动的东西。

Unity CLI<->通过com. Unity.pipeline运行编辑器

使用eval执行C#脚本

注册命令涵盖您预期的操作。Unity 命令评估涵盖您未预期的操作。它评估运行编辑器的任意 C# 表达式,并将结果:从终端实时读取-评估-打印循环 (REPL) 返回到您的项目中。

unity command eval "return Application.version;"
unity command eval "return UnityEditor.EditorApplication.isPlaying;"
unity command eval "var s = Application.dataPath; return s.Length;" --json
unity command eval_file "path/to/script.cs"

它是用 Roslyn 编译的,在编辑器的主线程上运行,所以它可以到达你的项目所能达到的任何引擎或编辑器 API,并且同样的 -- 运行时标志将它指向一个实时播放器。因为电源切断了双向,所以eval在账户认证所用令牌后面被选通。没有预定义的命令,没有插件,没有重新编译:如果你可以用C#表达一个问题,你可以问一个正在运行的Unity分层。

好处是速度快。通常的更改和检查周期(编辑、重新编译、重新启动)最多花费几秒钟;针对已经启动的分层评估答案只需毫秒。在脚本或座席在会话级别/会话次数中发出的许多呼叫中,这些差异加起来,正是这些差异给 AI 座席带来了一个紧密的反馈循环,而不是缓慢的反馈循环。

在一小部分时间内迭代

人工智能辅助开发的基础

这些部件(一个可脚本化的 CLI、一个可编程编辑器和一个实时 REPL)加起来不仅方便。正是它们使得本帖顶部的演示成为可能,它们将Unity变成了人工智能特工可以实际工作的环境。

AI编码助手擅长编写代码和内容。历史上,他们一直在为周围的一切而挣扎:运行项目,查看故障,再试一次。助手可以生成游戏脚本,但不能运行测试来查看它是否工作。Unity CLI 和管道层弥补了这一差距。

两种特性使情况有所不同。首先,CLI 使用一种语言代理理解:结构化 JSON 和可预测的退出代码契约意味着模型可以获得干净、可解析的结果,而不是刮花控制台文本。在 CI 中使其可靠的相同品质使其作为座席呼叫的工具可靠。

第二,管道包使编辑器自我描述:不带参数运行 Unity 命令,连接的编辑器报告其公开的操作。代理在运行时发现它可以做什么,而不是依赖硬编码列表。而且,由于命令是用简单的属性注册的,因此您的团队可以将特定于项目的操作公开为座席可调用的工具。这意味着每个注册的命令自然地映射到代理已经知道如何调用的工具类型。

把这些放在一起,您会得到一个真正的反馈回路:助手可以打开项目,应用更改,运行测试,进入播放模式检查行为,读取结果,并决定下一步做什么,无需人工来回中继输出。那就是从建议的助手到可以验证的助手的转变这也是新兴代理标准的自然契合点:每个注册的命令都映射到函数调用模型或MCP服务器已经知道如何调用的工具类型上。

而且特工能做什么也没有固定的清单因为eval可以到达项目可以调用的任何API,所以代理的能力面与Unity相同:渲染、物理、动画、资产数据库、编辑器本身,再加上您自己的代码添加的所有内容。这个范围是十几年API工作的结果,代理无需任何额外集成即可获得。

一个管道连接到 Unity 的整个 API
一个管道连接到 Unity 的整个 API

我们正处于这个阶段,而原始人今天已经在这里了。如果您正在为 Unity 构建 AI 辅助工具,那么管道软件包就是起点。

它与 Unity 的人工智能产品有何关联

如果您使用 Unity 的 AI 产品,如编辑器内助手套件,这就是其下面的层。Unity 的 AI 是为您的项目推理并决定做什么的部分。CLI 和管道包是执行这些决策的执行面:快速、本地和账户认证所用令牌。任何代理都可以使用相同的表面,无论是 Unity 自己的工具路由通过其 MCP 服务器、第三方助理,还是您自己编写的脚本。Unity的AI是它的一个消费者,而不是它的替代品。

现在可以获得

Unity CLI 在这里。安装它,运行 Unity --help,然后将其折叠到下一个生成脚本或 CI 作业中,或者使用代理自动执行。该文档具有完整的命令参考。告诉我们您构建了什么;您的反馈将决定下一步的发展方向。

安全港声明:此路线图代表了 Unity 当前开发我们产品套件的意图。它仅供参考,不承诺提供任何特定的特性或功能。提供的信息随时可能更改,Unity 不保证任何未来发布的内容、时间或性质。用户不应依赖此路线图做出任何关键业务决策。