zoukankan      html  css  js  c++  java
  • [Unity热更新]03.加载方式

    参考链接:

    https://blog.csdn.net/qq_40338728/article/details/87880870

    https://docs.unity3d.com/Manual/AssetBundles-Building.html

    https://docs.unity3d.com/Manual/AssetBundles-Native.html

    1.BuildAssetBundleOptions

    三种压缩方式:

    a.None

    使用LZMA算法压缩,打出的包体积最小,加载时间最长。使用这种方式压缩的包,在使用前需要整个包解压,从而导致加载时间变长。当整个包解压后,会使用LZ4算法再次压缩

    b.UncompressedAssetBundle

    不压缩,打出的包体积最大,加载时间最短

    c.ChunkBasedCompression

    使用LZ4算法压缩,打出的包体积中等,加载时间中等(即介于None和UncompressedAssetBundle之间)。使用这种方式压缩的包,在使用前不需要整个包解压,即要用哪个资源才解压哪个,局部解压

    测试(这里只测试了包体积,因为测试的包比较小加载时间差别不大就不贴出来了):

    None:

    UncompressedAssetBundle:

    ChunkBasedCompression:

    2.加载AB包的方式(同步 or 异步)

    a.AssetBundle.LoadFromMemoryAsync

     1 using System.Collections;
     2 using System.IO;
     3 using UnityEngine;
     4 
     5 public class TestAB : MonoBehaviour
     6 {
     7     void Start()
     8     {
     9         StartCoroutine(Load());
    10     }
    11 
    12     IEnumerator Load()
    13     {
    14         AssetBundleCreateRequest request = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes("Assets/AB/cube"));
    15         yield return request;
    16         AssetBundle cubeAB = request.assetBundle;
    17         if (cubeAB != null)
    18         {
    19             GameObject go = Instantiate(cubeAB.LoadAsset<GameObject>("cube"));
    20             go.transform.localScale = Vector3.one * 2;
    21         }
    22     }
    23 }

    b.AssetBundle.LoadFromFile

     1 using UnityEngine;
     2 
     3 public class TestAB : MonoBehaviour
     4 {
     5     void Start()
     6     {
     7         AssetBundle cubeAB = AssetBundle.LoadFromFile("Assets/AB/cube");
     8         if (cubeAB != null)
     9         {
    10             GameObject go = Instantiate(cubeAB.LoadAsset<GameObject>("cube"));
    11             go.transform.localScale = Vector3.one * 2;
    12         }
    13     }
    14 }

    c.WWW.LoadFromCacheOrDownload(废弃接口,新接口UnityWebRequest)

     1 using System.Collections;
     2 using System.IO;
     3 using UnityEngine;
     4 
     5 public class TestAB : MonoBehaviour
     6 {
     7     void Start()
     8     {
     9         StartCoroutine(Load());
    10     }
    11 
    12     IEnumerator Load()
    13     {
    14         string path = Application.dataPath + "/AB/cube";
    15         Debug.Log(path);
    16         WWW www = WWW.LoadFromCacheOrDownload(path, 1);
    17         yield return www;
    18         AssetBundle cubeAB = www.assetBundle;
    19         if (www.error != null)
    20         {
    21             Debug.Log(www.error);
    22         }
    23         if (cubeAB != null)
    24         {
    25             GameObject go = Instantiate(cubeAB.LoadAsset<GameObject>("cube"));
    26             go.transform.localScale = Vector3.one * 2;
    27         }
    28     }
    29 }

    d.UnityWebRequest

     1 using System.Collections;
     2 using UnityEngine;
     3 using UnityEngine.Networking;
     4 
     5 public class TestAB : MonoBehaviour
     6 {
     7     void Start()
     8     {
     9         StartCoroutine(Load());
    10     }
    11 
    12     IEnumerator Load()
    13     {
    14         string path = "file:///" + Application.dataPath + "/AB/cube";
    15         Debug.Log(path);
    16         UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(path);
    17         yield return request.SendWebRequest();      
    18         AssetBundle cubeAB = DownloadHandlerAssetBundle.GetContent(request);
    19         if (cubeAB != null)
    20         {
    21             GameObject go = Instantiate(cubeAB.LoadAsset<GameObject>("cube"));
    22             go.transform.localScale = Vector3.one * 2;
    23         }
    24     }
    25 }

    3.加载AB包中的资源的方式(同步 or 异步)

    a.LoadAsset

    b.LoadAssetAsync

  • 相关阅读:
    惊讶
    BLOG休假
    因考试得福
    Shape of My HeartSting !
    一个月的第一天了
    BLOG开张喽~~~
    该走了
    脏话
    EditText的属性
    游戏引擎
  • 原文地址:https://www.cnblogs.com/lyh916/p/10924310.html
Copyright © 2011-2022 走看看