Unity 加载AssetBundle的方法

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值