Исправить AssetBundles так же просто, как загрузить новый AssetBundle и заменить существующий. Если WWW.LoadFromCacheOrDownload
или UnityWebRequest
используются для управления кэшированными AssetBundles приложения, передача другого параметра версии в выбранный API вызовет срабатывание загрузка новых AssetBundles.
Более сложная проблема, которую нужно решить в системе исправлений, — определить, какие AssetBundles следует заменить. Для системы исправлений требуется два списка информации:
- Список загруженных в данный момент AssetBundles и информация об их версиях.
- Список AssetBundles на сервере и информация об их версиях.
Программа исправления должна загрузить список серверных пакетов AssetBundle и сравнить списки AssetBundle. Отсутствующие пакеты AssetBundles или пакеты AssetBundle, информация о версии которых изменилась, следует загрузить повторно.
Также можно написать собственную систему для обнаружения изменений в AssetBundles. Большинство разработчиков, создающих собственные системы, предпочитают использовать стандартный формат данных для своих списков файлов AssetBundle, например JSON, и стандартный класс C# для вычисления контрольных сумм, например MD5.
Unity создает пакеты AssetBundles с данными, упорядоченными детерминированным образом. Это позволяет приложениям с пользовательскими загрузчиками применять дифференциальные исправления.
Unity не предоставляет встроенного механизма дифференциального исправления, и ни WWW.LoadFromCacheOrDownload
, ни UnityWebRequest
не выполняют дифференциальное исправление, когда с помощью встроенной системы кэширования. Если дифференциальное исправление является требованием, необходимо написать собственный загрузчик.