Unity 6.3
0 онлайн 85 гостей 3 в системе
Вход

Управление пакетами ассетов во время выполнения

Unity предоставляет APIs для управления пакетами ассетов во время выполнения. Они используют Google PlayCore API, что означает, что они имеют те же ограничения, что и PlayCore, и не могут управлять пакетами ассетов install-time. Использование PlayCore API также означает, что ваше приложение требует плагина PlayCore. Если в вашем проекте есть пакеты ассетов, либо пользовательские пакеты ассетов, либо пакеты ассетов, созданные Unity, Unity автоматически добавляет зависимость PlayCore в манифест приложения.

Способ загрузки пакетов ресурсов и доступа к их ресурсам зависит от режима доставки пакета ресурсов. Существует три режима доставки пакетов ресурсов:

  • install-time: Google Play автоматически загружается install-time пакеты ассетов, когда устройство устанавливает приложение. Google Play рассматривает эти пакеты ассетов как часть базового приложения, и конечный пользователь не может удалить их без удаления всего приложения. PlayCore API не обрабатывает install-time пакеты ассетов, что означает, что вы не можете проверить статус, запросить загрузку или удалить install-time Вы также не можете напрямую получить доступ к ассетам внутри этих пакетов ассетов, за исключением потоковых ассетов в Unity- генерируемые install-time Для доступа к потоковым ресурсам, используйте Application.streamingAssetsPath чтобы получить путь к потоковому расположению ассетов, затем используйте UnityWebRequest Если вы создаете пользовательский пакет ассетов, вы не можете получить доступ к ассетам внутри него с помощью стандартного файла APIs. Вместо этого использовать API AssetManager в Android.
  • fast-follow: Google Play автоматически начинает загрузку пакетов fast-follow после установки приложения. Однако, возможно, что не все пакеты fast-follow доступны при первом запуске приложения. Чтобы проверить статус и загрузить пакеты fast-follow, см. Загрузить пакеты.
  • on-demand: Google Play не загружает автоматически пакеты ресурсов on-demand. Вы должны начать загрузку вручную. Информацию о том, как это сделать, см. в Загрузить пакеты ресурсов.

Дополнительные сведения о способах доставки см. в Способы доставки.

Загрузить пакеты ресурсов

Если ваше приложение использует fast-follow или on-demand пакеты ассетов, устройство должно загрузить эти пакеты ассетов, прежде чем приложение может получить доступ к ассетам внутри них. Чтобы проверить состояние пакетов ассетов и загрузить их, если они не на устройстве, вы должны сначала знать имя каждого пакета ассетов. Чтобы получить имена Unity-сгенерированные пакеты ассетов, вызов AndroidAssetPacks.GetCoreUnityAssetPackNames. Нет времени выполнения API чтобы получить имена пользовательские пакеты активов так что вы должны следить за ними самостоятельно. Вы устанавливаете имя пользовательских пакетов ассетов во время сборки; это имя каталога.

После получения имен пакетов ассетов, чтобы проверить состояние каждого пакета ассетов, вызовите AndroidAssetPacks.GetAssetPackStateAsync, передавая имя пакета ассетов. Это возвращает состояние пакета ассетов, который вы запрашиваете, и вы можете использовать результат для определения необходимости загрузки пакета ассетов. Если вы хотите быстро запросить состояние каждого пакета ассетов, созданного Unity, вы можете использовать AndroidAssetPacks.coreUnityAssetPacksDownloaded. Это поможет вам убедиться, что каждый пакет ассетов, созданный Unity, доступен до загрузки любой сцены, кроме первой, или попытки доступа к другим ресурсам, которые обрабатывает Unity.

Для каждого пакета ассетов, который вам нужно загрузить, вызовите AndroidAssetPacks.DownloadAssetPackAsync, передавая имя пакета ассетов. Во время загрузки пакета ассетов следите за состоянием загрузки, так как загрузка может быть приостановлена или прервана. Существует два способа сделать это:

  • Периодически проверяйте экземпляр DownloadAssetPackAsyncOperation, который возвращает AndroidAssetPacks.DownloadAssetPackAsync.
  • Используйте версию AndroidAssetPacks.DownloadAssetPackAsync, которая принимает обратный вызов в качестве второго параметра. Переданный обратный вызов должен принимать AndroidAssetPackInfo в качестве параметра, по которому можно определить состояние загрузки.

Дополнительные ресурсы