Unity 加载AssetBundle的方法

加载AssetBundle的方法

  • 1,从二进制文件中异步加载AB
  • 2,资源同步加载
  • 3,从文件中进行直接加载
  • 4,从文件中进行异步加载
  • 5,网页加载 UnityWebRequest(一)
  • 6,网页加载 UnityWebRequest(二)
  • 7,网页加载 UnityWebRequest(三)
  • 8,读取Manifest文件,获取它们的依赖关系并且加载出来

1,从二进制文件中异步加载AB

IEnumerator LoadAB()
{
     
  AssetBundleCreateRequest request = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path));
  yield return request;
  AssetBundle ab = request.assetBundle;
  GameObject monster = ab.LoadAsset<GameObject>("Monster");
  Instantiate(monster);
}

2,资源同步加载

Instantiate(AssetBundle.LoadFromMemory(File.ReadAllBytes(path)).LoadAsset<GameObject>("Monster"));

3,从文件中进行直接加载

AssetBundle ab = AssetBundle.LoadFromFile("AssetBundles/scene/monster.ab");
GameObject monster= ab.LoadAsset<GameObject>("Monster");
Instantiate(monster);

4,从文件中进行异步加载

IEnumerator LoadCacheOrDownloadFromFile(string path)
{
     
  WWW www = WWW.LoadFromCacheOrDownload(path, 1);
  yield return www;

  if( !string.IsNullOrWhiteSpace(www.error) )
  {
     
    Debug.Log(www.error);
    yield break;
  }
  AssetBundle ab = www.assetBundle;
  GameObject monster = ab.LoadAsset<GameObject>("Monster");
  Instantiate(monster);
}

5,网页加载 UnityWebRequest(一)

UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(path);
yield return request.SendWebRequest();
AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);
GameObject monster = ab.LoadAsset<GameObject>("Monster");
Instantiate(monster);

6,网页加载 UnityWebRequest(二)

UnityWebRequest request = UnityWebRequest.Get(path);
request.downloadHandler = new DownloadHandlerAssetBundle (path, 0);
yield return request.SendWebRequest();
AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);
GameObject monster = ab.LoadAsset<GameObject>("Monster");
Instantiate(monster);

7,网页加载 UnityWebRequest(三)

UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(path);
yield return request.SendWebRequest();
AssetBundle ab = (request.downloadHandler as DownloadHandlerAssetBundle).assetBundle;
GameObject monster = ab.LoadAsset<GameObject>("Monster");
Instantiate(monster);

8,读取Manifest文件,获取它们的依赖关系并且加载出来

AssetBundle manifestAB = AssetBundle.LoadFromFile("AssetBundles/AssetBundles");
AssetBundleManifest manifest = manifestAB.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
string[] strArr = manifest.GetAllDependencies("scene/monster.ab");
foreach (var item in strArr)
{
     
  AssetBundle.LoadFromFile("AssetBundles/" + item);
}

你可能感兴趣的:(Unity,unity3d)