Unity предоставляет API для управления пакетами ресурсов во время выполнения. Они используют Google PlayCore API, что означает, что они имеют те же ограничения, что и PlayCore, и не могут управлять пакетами ресурсов время установки
. Использование API PlayCore также означает, что вашему приложению требуется подключаемый модуль PlayCore. Если в вашем проекте есть пакеты ресурсов, либо пользовательские пакеты ресурсов, либо пакеты ресурсов, созданные Unity, Unity автоматически добавляет зависимостьPlayCore в контекст в диспетчере пакетов зависимость — это конкретная версия пакета (выраженная в форме имя_пакета@версия_пакета
), которая требуется проекту или другому пакету для работы. Проекты и пакеты используют атрибут dependencies в своих манифестах для определения набора требуемых пакетов. Для проектов это считается прямой зависимостью; для пакетов это косвенные или транзитивные зависимости. Подробнее
См. в Словарь манифест приложения.
Способ загрузки пакетов ресурсов и доступа к их ресурсам зависит от режима доставки пакетов ресурсов. Существует три режима доставки пакетов ресурсов:
-
время установки
: Google Play автоматически загружает пакеты ресурсоввремя установки
, когда устройство устанавливает приложение. Google Play считает эти пакеты ресурсов частью базового приложения, и конечный пользователь не может удалить их, не удалив все приложение. PlayCore API не обрабатывает пакеты ресурсоввремя установки
, что означает, что вы не можете проверить статус, запросить загрузку или удалитьпакеты активов во время установки
. Вы также не можете получить прямой доступ к ресурсам внутри этих пакетов ресурсов, за исключением потоковых ресурсов в созданных Unity пакетах ресурсоввремя установки
. Чтобы получить доступ к потоковым ресурсам, используйте Application.streamingAssetsPath, чтобы получить путь к расположению потоковых ресурсов, а затем используйте UnityWebRequest для доступа к ресурсам по этому пути. Если вы создаете собственный пакет ресурсов, вы не можете получить доступ к ресурсам внутри него с помощью стандартных файловых API. Вместо этого используйте Android AssetManager API. -
fast-follow
: Google Play автоматически начинает загружать пакеты ресурсовfast-follow
после установки приложения. Однако возможно, что не все пакеты ресурсовfast-follow
доступны при первом запуске приложения. Чтобы проверить статус и загрузить пакеты ресурсовfast-follow
, см. раздел Загрузка пакетов ресурсов. -
по запросу
: Google Play не загружает автоматически пакеты ресурсовпо запросу
. Вы должны вручную запустить загрузку. Информацию о том, как это сделать, см. ниже.
Дополнительную информацию о режимах доставки см. в разделе режимы доставки. .
Загрузить пакеты ресурсов
Если ваше приложение использует пакеты ресурсов fast-follow
или on-demand
, устройство должно загрузить эти пакеты ресурсов до приложение может получить доступ к ресурсам внутри них. Чтобы проверить состояние пакетов ресурсов и загрузить их, если их нет на устройстве, вы должны сначала узнать название каждого пакета ресурсов. Чтобы получить имена пакетов ресурсов, созданных Unity, вызовите AndroidAssetPacks.GetCoreUnityAssetPackNames. Не существует API среды выполнения для получения имен пользовательских пакетов ресурсов, поэтому вы должны отслеживать их самостоятельно. Вы устанавливаете имя пользовательских пакетов активов во время сборки; это имя каталога.
После получения названий пакетов ресурсов, чтобы проверить статус каждого пакета ресурсов, вызовите AndroidAssetPacks.GetAssetPackStateAsync, передавая имя пакета активов. Это возвращает статус пакета ресурсов, который вы запрашиваете, и вы можете использовать результат, чтобы определить, нужно ли вам загружать пакет ресурсов. Если вы хотите быстро узнать статус каждого пакета ресурсов, созданного Unity, вы можете использовать AndroidAssetPacks.coreUnityAssetPacksDownloaded. Это полезно, потому что перед загрузкой любой сценыСцена содержит среды и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
Посмотрите в Словарь, кроме первого, или попробуйте получить доступ к другим ресурсам, которые Unity ручки.
Для каждого пакета ресурсов, который необходимо загрузить, вызовите AndroidAssetPacks.DownloadAssetPackAsync, передав имя пакета ресурсов. Во время загрузки пакета ресурсов следите за состоянием загрузки, поскольку загрузка может быть приостановлена или не выполнена. Это можно сделать двумя способами:
- Периодически проверяйте экземпляр DownloadAssetPackAsyncOperation, который возвращает AndroidAssetPacks.DownloadAssetPackAsync.
- Используйте версию AndroidAssetPacks.DownloadAssetPackAsync, которая принимает обратный вызов в качестве второго параметра. Обратный вызов, который вы передаете, должен принимать AndroidAssetPackInfo в качестве параметра, который можно использовать для определения состояния загрузки.