Статья

Meet the 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 управлять запущенным редактором или сборкой dev Player по локальному API. Вы можете раскрывать свои собственные команды атрибутом [CliCommand].
  • Команда Unity eval запускает код C# в реальном времени внутри запущенного редактора или плеера и возвращает результат, при этом перекомпиляция или перезагрузка домена на уровне проекта не требуется.
  • Вместе они позволяют агентам ИИ управлять Unity: наблюдать за живым проектом, действовать по нему и проверять результат.

Все больше и больше разработок происходит в терминале: в скриптах, в КИ и все чаще в руках агентов ИИ. Сегодня Unity встретит тебя там. Unity CLI подводит Unity к терминалу на каждом уровне: устанавливать и управлять редакторами с помощью одного двоичного файла, управлять запущенным редактором из сценария и даже выполнять живой C# внутри вашего проекта без перекомпиляции. Это одна единственная, быстрая команда Unity, и каждый слой идет дальше предыдущего: CLI управляет Unity, пакет Pipeline приводит его в движение, и eval тянется внутрь него. Сегодня доступны как CLI, так и пакет Pipeline.

Прежде чем мы разберемся в вещах, давайте рассмотрим, что возможно, когда эти особенности соединяются вместе:

В этом 25-секундном ролике разработчик вручает агенту ИИ обычный английский отчет об ошибке: "игрок иногда проваливается под пол". Агент использует <code> eval команды Unity для проверки сцены в прямом эфире, обнаруживает отключённый коллайдер во время выполнения, снова включает его и снова переходит в режим Play для подтверждения исправления ситуации, наблюдая за запущенной игрой, действуя в соответствии с ней и проверяя сам результат без копирования вывода консоли.

What is the 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. См. последние данные в документации КЛИ.)

Исследуйте, что доступно:

unity --help

Установка редактора с нужными вам модулями однострочная:

unity install 6000.2.10f1 -m android ios webgl

Отсюда команды читаются так, как вы ожидали: редакторы Unity, чтобы увидеть, что установлено, Unity open, чтобы запустить проект с нужным редактором, и Unity auth авторизоваться для входа. Вы не уверены, какие идентификаторы модулей есть в версии? Unity modules list 6000. 2. 10f1.

Создан для автоматизации

ЦЛИ создавался для жизни внутри автоматики, а не только для интерактивной оболочки. Каждая команда может излучать структурированный выход, который вы можете запустить прямо в вашу оснастку:

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 doctor диагностирует проблемы с окружением, учётными данными и конфигурацией.

Разговор с редактором

Управление установками - это только половина дела. Unity CLI также может управлять запущенным редактором.

После добавления в проект com. Unity. pipeline позволяет запущенному редактору получать команды от CLI полностью на вашем компьютере. Она работает с Unity 6.0 LTS и более новыми, а также превращает Редактор в программируемую цель автоматизации для сценариев, заданий CI и агентских средств.

Добавление его в проект - одна команда:

unity pipeline install

Вы можете проверить, в каком из ваших проектов он установлен с помощью конвейера Unity list. При наличии пакета можно выполнять зарегистрированные команды против подключенного Редактора (или даже времени выполнения Плеера) прямо из терминала:

# 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 того же типа. Наведите на него CLI с помощью команды Unity -- runtime , чтобы вытащить живые журналы, состояние выполнения запроса или код горячей перезагрузки в уже воспроизводимой сборке. По умолчанию он работает только на локальном узле и выключен (для сборок dev и QA — никогда не производится), но он превращает работающий Плеер в нечто, на чем может ездить скрипт, тестовая установка или агент ИИ в экземпляре живого времени выполнения.

Unity CLI<->запуск редактора через com.unity.pipeline

Выполнить скрипты C# с eval

Зарегистрированные команды охватывают те операции, которые вы предвидели. Unity command eval охватывает те, которые вы не предвидели. Он оценивает произвольное выражение 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"

Он скомпилирован с Рослином и работает на главном потоке редактора, так что он достигает любого движка или редактора API, который может ваш проект, и тот же флаг --- выполнения направляет его на живого игрока. Потому что электричество отключено в обе стороны, Эвал скрыт за символом безопасности. Нет предопределённой команды, нет модуля, нет перекомпиляции: если вы можете выразить вопрос на C#, вы можете задать запущенный экземпляр Unity.

Преимущество в скорости. Обычный цикл изменения и проверки (редактирование, перекомпиляция, перезапуск) стоит в лучшем случае секунды. Ответ EVAL в миллисекунды на уже запущенный экземпляр. Из множества вызовов, которые делает скрипт или агент в сеансе, эта разница складывается, и именно она дает ИИ-агенту жесткий цикл обратной связи вместо медленного.

Итерация в доли времени

Фундамент для развития с помощью ИИ

Эти фрагменты (скриптируемый CLI, программируемый редактор и живой REPL) в сумме более чем удобны. Именно они делают демо-версию в верхней части этого поста возможной, и превращают Unity в среду, в которой агент ИИ действительно может работать.

Помощники по кодированию ИИ хорошо пишут код и контент. Они исторически боролись со всем вокруг: вели проект, смотрели, что сломалось, пытались снова. Ассистент может генерировать сценарий геймплея, но не может запустить тесты, чтобы проверить, работает ли он. Unity CLI и Pipeline слой сокращают этот разрыв.

Разница в двух свойствах. Во-первых, CLI говорит на языке, который понимают агенты: структурированный JSON и предсказуемый контракт exit-code означают, что модель получает чистые, разбираемые результаты вместо соскребенного консольного текста. Те же качества, которые делают его надежным в КИ, делают его надежным как инструмент, который вызывает агент.

Во- вторых, пакет Pipeline делает редактор самоописующимся: запустить команду Unity без аргументов, а подключенный редактор сообщит о раскрываемых им операциях. Агент обнаруживает, что он может делать во время выполнения вместо того, чтобы полагаться на список с жестким кодом. А поскольку команды регистрируются с простыми атрибутами, ваша команда может раскрыть операции конкретного проекта как средства вызова агентов. Это означает, что каждая зарегистрированная команда естественным образом сопоставляется с инструментом, который агент уже умеет вызывать.

Сложите их вместе, и вы получите реальную петлю обратной связи: ассистент может открыть проект, применить изменение, запустить тесты, войти в режим Играть, чтобы проверить поведение, прочитать результат и решить, что делать дальше, без ретрансляции человеком выхода туда-сюда. Это переход от помощника, который предполагает, к помощнику, который может проверить. Это также естественно для формирующихся стандартов агентов: каждая зарегистрированная команда сопоставляется с инструментом, который уже умеет вызывать модель вызова функций или MCP-сервер.

И нет никакого списка того, что может сделать агент. Поскольку eval достигает любого API, который может вызвать ваш проект, поверхность возможностей агента такая же, как и у Unity: рендеринг, физика, анимация, база данных активов, сам редактор, плюс всё, что добавляет ваш собственный код. Такой охват - результат более чем десятилетней работы над API, и агент получает его без какой-либо дополнительной интеграции.

Одна труба на весь API Unity
Одна труба на весь API Unity

Мы в самом начале, и примитивы уже сегодня здесь. Если вы создаете оснастку с помощью ИИ для Unity, то с пакета Pipeline и нужно начинать.

Как это связано с предложениями Unity в области ИИ

Если вы используете ИИ-предложения Unity, такие как пакет помощников в редакторе, то это слой под ним. ИИ Unity – это та часть, которая рассуждает о вашем проекте и решает, что делать. CLI и пакет Pipeline — это поверхность исполнения, которая выполняет эти решения: быстро, локально и с символическим затвором. Одна и та же поверхность открыта для любого агента, будь то собственная оснастка Unity, маршрутизирующая через свой MCP-сервер, сторонний помощник или сценарий, который вы пишете сами. ИИ Unity является одним из его потребителей, а не заменой ему.

Уже доступно

Unity CLI здесь. Установите его, запустите Unity -- help и сложите в следующий сценарий сборки или задание CI, или автоматизируйте его с помощью агента. Документация содержит полный командный справочник. Расскажите, что вы строите; ваша обратная связь определяет, куда она идёт дальше.

Заявление безопасной гавани: Эта дорожная карта отражает текущие намерения Unity по развитию нашего продуктового комплекса. Он предоставляется исключительно в ознакомительных целях и не является обязательством обеспечить какую-либо конкретную функцию или функциональность. Представленная информация может быть изменена в любое время, и Unity не гарантирует никаких гарантий относительно содержания, сроков или характера любых будущих релизов. Пользователю не следует полагаться на эту дорожную карту при принятии каких-либо важных для бизнеса решений.