版本:Unity 6 (6000.0)
语言中文
  • C#

AssetBundle.LoadFromMemoryAsync

提议修改

成功!

感谢帮助我们改进 Unity 文档质量。虽然我们无法接受所有提交内容,但我们会阅读每一位用户提出的修改建议,并在适当情况下进行更新。

关闭

提交失败

由于某种原因,无法提交修改建议。请在几分钟后<a>重试</a>。感谢您抽出宝贵时间帮助我们改进 Unity 文档质量。

关闭

取消

声明

public static AssetBundleCreateRequest LoadFromMemoryAsync(byte[] binary);

声明

public static AssetBundleCreateRequest LoadFromMemoryAsync(byte[] binary, uint crc);

参数

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); } }