uri | 要下載的資產包的 URI。 |
crc | 如果非零,此數字將與下載的資產包數據的校驗和進行比較。如果 CRC 不匹配,則會記錄一個錯誤,並且不會載入資產包。如果設定為零,則會跳過 CRC 檢查。 |
version | 一个整型版本号,它将同资产包的缓存版本进行比较以供下载。递增此数字来强制 Unity 重新下载一个缓存的资产包。 类似于 WWW.LoadFromCacheOrDownload 的 version 参数。 |
散列 | 一个版本散列。如果此散列与这个资产包的缓存版本的散列不匹配,资产包将重新下载。 |
cachedAssetBundle | 一个用于下载特定版本的 AssetBundle 到自定义缓存路径的结构。 |
UnityWebRequest 一个针对通过 HTTP GET 下载 Unity Asset Bundle 而配置的 UnityWebRequest。
创建一个针对通过 HTTP GET 下载 Unity Asset Bundle 而优化的 UnityWebRequest。
此方法创建一个 UnityWebRequest,将其方法设置为 GET
,并将目标 URL 设置为字符串 uri
参数。不设置其他标志或自定义标题。
此方法将一个 DownloadHandlerAssetBundle 附加到 UnityWebRequest。这个 DownloadHandler 有一个特殊的 DownloadHandlerAssetBundle.assetBundle 属性,它可以在下载和解码足够的数据以允许访问包内资源后用于提取资产包。
此外,DownloadHandlerAssetBundle 将数据流化到环形缓冲区中,并在工作线程上解压缩数据,这与一次全部下载数据相比节省了许多内存空间。
如果提供了整型 version
或 Hash128 hash
参数,DownloadHandlerAssetBundle 将采用 Asset Bundle 缓存系统。如果 Asset Bundle 已经缓存并且不需要重新下载,那么当 Asset Bundle 完成从缓存的加载后,UnityWebRequest 将完成。
缓存的 AssetBundle 仅通过文件名和版本而被唯一识别。缓存会忽略 url
中的所有域和路径信息。由于缓存的 AssetBundle 会由文件名(而不是完整的 URL)识别,因此你可以随时更改 Asset Bundle 从其处进行下载的目录。这对推出新版本的某游戏并确保文件不被浏览器或 CDN 错误地缓存非常有用。
通常,使用 AssetBundle 的文件名来生成缓存路径是可行的。但是,如果存在多个具有相同最终文件名的 AssetBundle,则会发生缓存冲突。凭借 CachedAssetBundle 结构,你可以使用 CachedAssetBundle.name 来自定义缓存路径,以避免发生缓存冲突。你还可以利用此组织缓存数据结构。
注意,虽然您可以使用此 API 从本地存储加载资源包(在 Android 上使用 file:// URI 或 jar:file//),但建议不要这样做,而应使用 AssetBundle.LoadFromFileAsync。
using UnityEngine; using UnityEngine.Networking; using System.Collections;
public class MyBehaviour : MonoBehaviour { void Start() { StartCoroutine(GetText()); }
IEnumerator GetText() { using (UnityWebRequest uwr = UnityWebRequestAssetBundle.GetAssetBundle("https://www.my-server.com/mybundle")) { yield return uwr.SendWebRequest();
if (uwr.result != UnityWebRequest.Result.Success) { Debug.Log(uwr.error); } else { // Get downloaded asset bundle AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(uwr);
// Unload the AssetBundle bundle.Unload(true); } } } }