binary | 包含 AssetBundle 数据的字节数组。 |
crc | 未压缩内容的可选 CRC-32 校验和。如果其值为非零,则系统会在加载内容前将其与校验和进行比较,并在不匹配时产生错误。 |
AssetBundleCreateRequest 用于 AssetBundle 的异步加载请求。一旦加载了 AssetBundle,请使用 assetBundle 属性来获取相应内容。
从内存区域异步加载 AssetBundle。
使用此方法可以异步地从字节数组中加载 AssetBundle。当您使用 UnityWebRequest 下载加密数据且内存中有未加密的字节(而非存储在文件中)时,这非常有用。
与 LoadFromMemory 相比,此版本将在后台线程上执行 AssetBundle 解压缩,而不会立即创建 AssetBundle 对象。
所提供的字节数组的内容将被复制以在内存中创建临时 AssetBundle 文件,然后加载该文件。根据原始 AssetBundle 的压缩方式和 Caching.compressionEnabled 的设置,这还可能涉及将内容转换成 LZ4 或未压缩的格式。请参阅 AssetBundle 压缩 以了解详情。
以下示例展示了如何使用此方法。注意,为了使示例保持简单,它从磁盘读取字节,这意味着它没有任何优点,因为直接调用 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); } }