Как интегрировать доставку объектов (Unity)

При интеграции доставки объектов игры Unity могут получать доступ к пакетам объектов с помощью Addressables или AssetBundles. Addressables – это более современное и рекомендуемое решение для доставки объектов в играх, созданных с помощью Unity 2019.4 или более поздней версии, а AssetBundles обеспечивает поддержку пакетов объектов в Unity 2017.4 и 2018.4.

Unity Addressables

В играх, созданных с помощью Unity 2019.4 или более поздней версии, для доставки наборов объектов на устройства Android следует использовать Addressables. В Unity есть Play Asset Delivery (PAD) API для работы с пакетами объектов Android с помощью Addressables. Дополнительную информацию об использовании Addressables можно найти в следующих источниках:

Как использовать файлы AssetBundle

Игры, созданные с помощью Unity 2017.4 и 2018.4, могут использовать файлы AssetBundle для доставки объектов на устройства Android. Файлы AssetBundle в Unity содержат сериализованные объекты, которые могут загружаться движком Unity во время работы приложения. Эти файлы предназначены для определенных платформ (например, Android) и могут использоваться в сочетании с пакетами объектов. Чаще всего один файл AssetBundle упаковывается в один пакет объектов с тем же названием, что и у AssetBundle. Если вам нужно больше возможностей для создания пакета объектов, настройте его с помощью API.

Чтобы получить набор AssetBundle, упакованный в пакет объектов, во время выполнения используйте класс Play Asset Delivery для Unity.

Требования

  1. Настройте среду разработки:

OpenUPM-CLI

Если у вас установлен OpenUPM CLI, вы можете установить реестр OpenUPM с помощью следующей команды:

openupm add com.google.play.assetdelivery

OpenUPM

  1. Откройте настройки менеджера пакетов, выбрав в меню Unity Edit (Редактировать) > Project Settings (Настройки проекта) > Package Manager (Менеджер пакетов).

  2. Добавьте OpenUPM в качестве реестра с ограниченной областью действия в окне Package Manager (Менеджер пакетов):

    Name: package.openupm.com
    URL: https://package.openupm.com
    Scopes: com.google.external-dependency-manager
      com.google.play.common
      com.google.play.core
      com.google.play.assetdelivery
      com.google.android.appbundle
    
  3. Откройте меню менеджера пакетов, выбрав в меню Unity Window (Окно) > Package Manager (Менеджер пакетов).

  4. В раскрывающемся списке "Область действия менеджера" выберите Мои реестры.

  5. Выберите пакет Google Play Integrity plugin for Unity из списка и нажмите Install (Установить).

Импортировать из GitHub

  1. Скачайте последнюю версию .unitypackage с сайта GitHub.

  2. Импортируйте файл .unitypackage, выбрав в меню Unity Assets (Объекты) > Import package (Импортировать пакет) > Custom Package (Пользовательский пакет), и импортируйте все элементы.

  1. Как создавать наборы объектов в Unity

Как настроить AssetBundles в интерфейсе

  1. Настройте каждый AssetBundle в пакете объектов:

    1. Выберите Google > Android App Bundle > Asset Delivery Settings (Google > Набор Android App Bundle > Настройки доставки наборов объектов).
    2. Чтобы выбрать папки, в которых непосредственно содержатся файлы AssetBundle, нажмите Добавить папку.

    Кнопка "Добавить папку" в настройках доставки объектов в Unity

  2. Для каждого набора измените Режим доставки на При установке, Быстрое скачивание или По запросу. Устраните ошибки или зависимости и закройте окно.

    Селектор режима доставки Asset Delivery для каждого набора в Unity

  3. Чтобы создать набор, выберите Google > Build Android App Bundle (Google > Создать набор Android App Bundle).

  4. При необходимости настройте поддержку разных форматов сжатия текстур в наборе App Bundle.

Как настроить пакеты объектов с помощью API

Вы можете настроить доставку наборов объектов с помощью скриптов редактора, которые можно запускать в рамках автоматизированной системы сборки.

Используйте класс AssetPackConfig, чтобы указать, какие объекты нужно включить в сборку набора Android App Bundle, а также режим их доставки. В этих пакетах объектов не обязательно должен быть AssetBundle.

public void ConfigureAssetPacks {
   // Creates an AssetPackConfig with a single asset pack, named
   // examplePackName, containing all the files in path/to/exampleFolder.
   var assetPackConfig = new AssetPackConfig();
   assetPackConfig.AddAssetsFolder("examplePackName",
                                   "path/to/exampleFolder",
                                   AssetPackDeliveryMode.OnDemand);

   // Configures the build system to use the newly created assetPackConfig when
   // calling Google > Build and Run or Google > Build Android App Bundle.
   AssetPackConfigSerializer.SaveConfig(assetPackConfig);

   // Alternatively, use BundleTool.BuildBundle to build an App Bundle from script.
   BuildBundle(new buildPlayerOptions(), assetPackConfig);
}

Вы также можете использовать статический метод BuildBundle в классе Bundletool, чтобы создать набор Android App Bundle с пакетами объектов, используя BuildPlayerOptions и AssetPackConfig.

Подробные инструкции вы найдете в практической работе по использованию Play Asset Delivery в играх Unity.

Интеграция с Play Asset Delivery Unity API

Play Asset Delivery Unity API позволяет запрашивать пакеты объектов, управлять скачиваниями и получать доступ к объектам. Сначала добавьте плагин Unity в проект.

Функции, которые вы используете в API, зависят от того, как вы создали пакеты объектов.

Если вы создали пакеты объектов с помощью интерфейса плагина, выберите Plugin-configured asset packs (Пакеты объектов, настроенные с помощью плагина).

Если вы создали пакеты объектов с помощью API или интерфейса плагина, выберите Пакеты объектов, настроенные с помощью API.

Дальнейшие действия

Протестируйте доставку наборов объектов локально и из Google Play.