从HTTP服务器下载AssetBundle(GET)
要从远程服务器下载AssetBundle
,可以使用UnityWebRequest.GetAssetBundle
。此函数将数据流式传输到内部缓冲区,该缓冲区解码并解压缩工作线程上的AssetBundle
数据。
函数的参数有几种形式。以最简单的形式,它只需要从中下载AssetBundle
的URL。您可以选择提供校验和来验证下载数据的完整性。
或者,如果您希望使用AssetBundle
缓存系统,则可以提供版本号或Hash128
数据结构。这些与版本号相同或Hash128 objects通过旧系统提供WWW.LoadFromCacheOrDownload
。
细节
• 该函数创建一个UnityWebRequest并将目标URL设置为提供的URL参数。它还将HTTP动词设置为GET,但不设置其他标志或自定义标题。
• 该功能附加一个DownloadHandlerAssetBundle到UnityWebRequest。这个下载处理程序有一个特殊的assetBundle属性,一旦足够的数据被下载和解码以允许访问AssetBundle内部的资源,它就可以用来提取AssetBundle。
• 如果您提供版本号或Hash128对象作为参数,它也将这些参数传递给DownloadHandlerAssetBundle。下载处理程序然后使用缓存系统。
例
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class MyBehaviour : MonoBehaviour {
void Start() {
StartCoroutine(GetAssetBundle());
}
IEnumerator GetAssetBundle() {
UnityWebRequest www = UnityWebRequest.GetAssetBundle("http://www.my-server.com/myData.unity3d");
yield return www.SendWebRequest();
if(www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
}
else {
AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www);
}
}
}
🔚