从HTTP服务器下载AssetBundle(GET)

要从远程服务器下载AssetBundle,可以使用UnityWebRequest.GetAssetBundle。此函数将数据流式传输到内部缓冲区,该缓冲区解码并解压缩工作线程上的AssetBundle数据。

函数的参数有几种形式。以最简单的形式,它只需要从中下载AssetBundle的URL。您可以选择提供校验和来验证下载数据的完整性。

或者,如果您希望使用AssetBundle缓存系统,则可以提供版本号或Hash128数据结构。这些与版本号相同或Hash128 objects通过旧系统提供WWW.LoadFromCacheOrDownload

细节

  1. 该函数创建一个UnityWebRequest并将目标URL设置为提供的URL参数。它还将HTTP动词设置为GET,但不设置其他标志或自定义标题。
  2. 该功能附加一个DownloadHandlerAssetBundleUnityWebRequest。这个下载处理程序有一个特殊的assetBundle属性,一旦足够的数据被下载和解码以允许访问AssetBundle内部的资源,它就可以用来提取AssetBundle
  3. 如果您提供版本号或Hash128对象作为参数,它也将这些参数传递给DownloadHandlerAssetBundle。下载处理程序然后使用缓存系统。

  1. using UnityEngine;
  2. using UnityEngine.Networking;
  3. using System.Collections;
  4. public class MyBehaviour : MonoBehaviour {
  5. void Start() {
  6. StartCoroutine(GetAssetBundle());
  7. }
  8. IEnumerator GetAssetBundle() {
  9. UnityWebRequest www = UnityWebRequest.GetAssetBundle("http://www.my-server.com/myData.unity3d");
  10. yield return www.SendWebRequest();
  11. if(www.isNetworkError || www.isHttpError) {
  12. Debug.Log(www.error);
  13. }
  14. else {
  15. AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www);
  16. }
  17. }
  18. }

?