AssetBundle.LoadFromMemoryAsync
Declaration
public static AssetBundleCreateRequest LoadFromMemoryAsync(byte[] binary);public static AssetBundleCreateRequest LoadFromMemoryAsync(byte[] binary, uint crc);Параметры
| Параметр | Описание |
|---|---|
| бинарный | Массив байтов с данными AssetBundle. |
| crc (сохранить) | Необязательная контрольная сумма CRC-32 несжатого содержимого. Если это ненулевое значение, то содержимое будет сопоставлено с контрольной суммой перед загрузкой и будет возвращена ошибка, если она не совпадает. |
Возвращаемое значение
AssetBundleCreateRequest Асинхронный запрос на загрузку AssetBundle. Используйте свойства AssetBundleCreateRequest.assetBundle для получения AssetBundle после его загрузки.
Описание
Асинхронно загрузить AssetBundle из области памяти.
Используйте этот метод для асинхронной загрузки AssetBundle из массива байтов. Это полезно, когда вы загрузили данные с шифрованием с помощью UnityWebRequest и незашифрованные байты находятся в памяти, а не в файле.
По сравнению с LoadFromMemory, эта версия будет выполнять декомпрессию AssetBundle на фоновом потоке, и не будет создавать объект AssetBundle немедленно.
Содержимое предоставленного массива байтов копируется для создания временного файла AssetBundle в памяти, и этот файл загружается. В зависимости от сжатия оригинального AssetBundle и настройки для Caching.compressionEnabled, это также может включать преобразование содержимого в LZ4 или несжатый формат. См. AssetBundles сжатие для более подробной информации.
В следующем примере показано, как использовать этот метод. Обратите внимание, что для упрощения примера он читает байт с диска, что означает, что он не имеет преимуществ перед прямым вызовом AssetBundle.LoadFromFileAsync.
using UnityEngine; using System.Collections; using System.IO;
public class Example : MonoBehaviour { IEnumerator LoadFromMemoryAsync(string path) { AssetBundleCreateRequest createRequest = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path)); yield return createRequest; AssetBundle bundle = createRequest.assetBundle; var prefab = bundle.LoadAsset<GameObject>("MyObject"); Instantiate(prefab);
bundle.Unload(true); } }
Дополнительные ресурсы: ,AssetBundleCreateRequest,, ,LoadFromMemory,, ,LoadFromFileAsync,.