???? Нативное решение Unity

В 2018 разработчики из Unity релизнули централизованное хранилище для итеративных обновлений движка и расширений Editor, которое получило название UPM - Unity Package Manager.

Позже появились и сторонние сервисы через которые распространяются UPM-пакеты:

Отдельно можно выделить NuGetForUnity, который запускает NuGet клиент внутри редактора Unity.

Несмотря на это, больше 93 тысяч ассетов и расширений публикуются в Asset Store, который официально не предоставляет функционал загрузки UPM-пакетов.

???? Ищем решение

Asset Store Tools v11.3.1, разрешает загружать ассеты из следующих источников:

  • Папки Assets

  • Aрхива .unitypackage

Просмотрев исходники Asset Store Tools, видим экспериментальный функционал обернутый в директиву #if UNITY_ASTOOLS_EXPERIMENTAL:

Функционал уже реализован со стороны Unity, но недоступен конечным паблишерам:


При этом Unity Technologies разработчики загружают собственные ассеты виде UPM-пакетов:

Структура UPM-пакета Asset Store Tools
Структура UPM-пакета Asset Store Tools

Чтобы добиться аналогичного результата выполняем следующие шаги:

  1. Создаем черновик ассета через Unity Publisher Portal:

    Если черновик создался успешно, изменение отобразится в Uploader окне
    Если черновик создался успешно, изменение отобразится в Uploader окне
  2. Добавляем в define Unity проекта
    значение UNITY_ASTOOLS_EXPERIMENTAL
    Project Settings > Scripting Define Symbols:

  3. После завершения компиляции, выбираем опцию загрузки локального UPM-пакета и указываем путь до пакета с исходниками:

  4. Нажимаем на кнопку Upload и ????:

    Unity модерация не отклоняет UPM-пакеты и успешно загружает их на свои сервера
    Unity модерация не отклоняет UPM-пакеты и успешно загружает их на свои сервера

???? Заключение

Тип загрузки с помощью UPM-пакетов, подойдет для ассетов или тулзов, которые версионируются и конфигурируют зависимости между пакетами.

Тем самым получая единообразную структуру ассетов для UPM реестра и Asset Store хранилища.

Вероятно, в будущих релизах Unity опубликуют открытое решение для паблишеров.
Если вы тоже юзали internal или experimental фичи, обязательно пишите об этом.

???? Полезные ссылки

Smart Importer - GitHub, Asset Store
Asset Store Tools - GitHub, Asset Store
Unity’s Package Manager

Комментарии (0)