Интерфейс командной строки для сборки билдов.Позволяет добавлять свои опции и шаги сборки.
- Определяем последовательность шагов.
- Находим все опции.
- Обрабатываем параметры командной строки и переменных окружения.
- Выполняем шаги, реализующие
IRunPreBuild
. - Выполняем шаги, реализующие
IRunPostBuild
в обратном порядке.
Чтобы добавить шаг в процесс сборки нужно создать класс и реализовать интерфейс (или оба):
IRunPreBuild
- если действия необходимо выполнить до сборки Player'aIRunPostBuild
- если действия необходимо выполнить после сборки Player'a
Помимо этого вы можете расширить один из встроенных шагов - в таком случае будет выполнен именно наследованный шаг. В этом случае вы можете повлиять на его порядок выполнения, однако требования к порядку от базового класса все равно останутся.
Во время выполнения у вас будет доступ к интерфейсу IStepLocator
. С его помощью вы можете получить доступ к свойствам других шагов (например узнать целевую платформу или список сцен).
RunBefore
- указывает перед какими шагами должен быть выполнен текущий.RunAfter
- указывает после каких шагов должен быть выполнен текущий.
На основе этих атрибутов система сама вычислит в каком порядке нужно будет выполнить имеющиеся шаги. Этот порядок можно увидеть в окне Unity Core → Build Inspector
Для создания опции используется атрибут Option, в котором задается имя опции. Имя указывается без символа -, который пишется только в командной строке
Вы можете отметить этим атрибутом:
- Свойство. У него обязательно должен быть set метод (публичный или приватный)
- Метод. У него обязательно должен быть 1 аргумент (опциональные аргументы тоже поддерживаются)
Если ваши опции не соответствуют требованиям то произойдет исключение. Вы можете убедится, что все хорошо, заглянув в окно Unity Core → Build Inspector
Тип опции определяется либо типом свойства, либо типом первого аргумента метода.
Поддерживаются следующие типы:
- Все примитивные типы: int, bool, float, double, etc
- Строки
- Enum'ы
- Пользовательские типы, для которых определен TypeConverter
Конвертация из строки в тип опции произойдет автоматически.
В общем случае опции передаются через командную строку:
Unity.exe [опции Unity] -executeMethod CLI.Build -option1=true -option2=123 -option3="Path to some folder"
Опции можно указывать в следующих форматах:
-<OptionName>=<OptionValue>
-<OptionName>="<OptionValue>"
- в случае, когда значение может содержать пробел
-<OptionName>=[ $(EnvValue) | ${EnvValue} ]
- здесь EnvValue задает имя переменной окружения, в которой находится значение
Так же опции ищутся в переменных окружения с теми же именами, что и опции (например buildDir)
Это окно можно найти в меню Unity Core → Build Inspector.
Окно отображает следующую информацию:
- Build Plan - шаги сборки и их порядок.
- Available options - список всех доступных опций в текущем проекте. Рядом есть поле для поиска.
- Selected options - список опций и их значения для выполнения сборки из редактора.
Кнопки внизу окна:
- Run build with options - запускает билд с заданными значениями опций. Удобный способ локально проверить сборку с парметрами взятыми с билд-сервера.
- Validate command line - проверяет, что все опции корректно парсятся. Если что-то идет не так - показывает в какой опции проблема.
- Copy command line - копирует командную строку с заполненными значениями выбранных опций, чтобы можно было сразу вставить в билд-скрипт.