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

AssetBundles в Интернете

Примечание: рекомендуемый способ загрузки ассетов — система Addressables в Unity. Следующие сведения относятся только к непосредственному использованию AssetBundle.

Поскольку все данные ассетов должны быть предварительно загружены до начала просмотра контента, рассмотрите возможность перемещения ассетов из ваших основных файлов данных в AssetBundles. Это создает меньшую сцену загрузчика, которая загружается быстро, в то время как AssetBundles динамически загружает ассеты по требованию по мере прохождения пользователем контента. AssetBundles также помогает с Память данных активов Управление: Вы можете выгрузить данные ассетов из памяти для ассетов, которые вам больше не нужны, вызвав AssetBundle.Unload.

При использовании AssetBundles на веб-платформе следует учитывать следующие моменты:

  • Если вы используете в AssetBundle типы классов, не задействованные в основной сборке, Unity может вырезать их код из сборки. Тогда загрузка ассетов из AssetBundle завершится ошибкой. Используйте BuildPlayerOptions.assetBundleManifestPath исправить эту проблему, и обратиться к Размер распределения и удаление кода для других вариантов.

  • Графический API WebGL не поддерживает многопоточность. Поскольку HTTP-загрузки становятся доступны только после завершения, сборки Unity Web должны распаковывать данные AssetBundle в главном потоке после окончания загрузки, блокируя его. Чтобы избежать этой задержки, сжатие AssetBundle методом LZMA недоступно для AssetBundles на Web. Вместо этого AssetBundles сжимаются методом LZ4, который позволяет эффективно распаковывать данные по запросу. Если нужна более высокая степень сжатия, чем обеспечивает LZ4, настройте веб-сервер на применение gzip или Brotli поверх LZ4-сжатия AssetBundles. Дополнительные сведения см. в разделе «Развёртывание сжатых сборок».

  • Веб-платформа не поддерживает файлово-системное кэширование AssetBundle с UnityWebRequestAssetBundle.GetAssetBundle. Вместо этого браузер кэширует ответы WebRequest; подробнее см. Поведение кэша в Веб. Это означает, что весь файл AssetBundle хранится в памяти при загрузке AssetBundle, и вы должны немедленно выгрузить неиспользуемые AssetBundles, особенно если они большие.

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