• 从HTTP服务器下载AssetBundle(GET)
    • 细节

    从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. }

    ?