string path = @"AssetBundles/scene/cubewall.ab";
string cacheDownloadPath = @"file://D:\UnityWorkSpace\FifthMonthWork_Groups\AssetBundle_Demo\AssetBundles\scene\cubewall.ab";
string tempWebAddress = @"http://localhost/AssetBundles/scene/wall.ab";
//第一种加载AB的方式,异步进行加载从二进制文件中
IEnumerator LoadAB()
{
AssetBundleCreateRequest request = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path));
yield return request;
AssetBundle ab = request.assetBundle;
GameObject wallPrefab = ab.LoadAsset
Instantiate(wallPrefab);
}
//第二种进行资源加载,同步加载
Instantiate(AssetBundle.LoadFromMemory(File.ReadAllBytes(path)).LoadAsset
//第三种加载AB的方式,LoadFromFile【从文件进行加载】
AssetBundle ab = AssetBundle.LoadFromFile("AssetBundles/scene/wall.ab");
GameObject wallPrefab = ab.LoadAsset
Instantiate(wallPrefab);
//第四种加载AB的方式,LoadFromFileAsync【从文件进行异步加载】
IEnumerator LoadFileAsync()
{
AssetBundleCreateRequest request = AssetBundle.LoadFromFileAsync(path);
yield return request;
AssetBundle ab = request.assetBundle;
Instantiate(ab.LoadAsset
}
//第五种加载AB的方式,WWW.LoadFromCacheOrDownload - 从缓存中加载和下载
IEnumerator LoadCacheOrDownloadFromFile(string path)
{
while (Caching.ready == false)
yield return null;
WWW www = WWW.LoadFromCacheOrDownload(path, 1);
yield return www;
if( !string.IsNullOrEmpty(www.error) )
{
Debug.Log(www.error);
yield break;
}
AssetBundle ab = www.assetBundle;
GameObject wallPrefab = ab.LoadAsset
Instantiate(wallPrefab);
}
//第六种加载AB的方式,UnityWebRequest,网页请求进行加载【第一种方法】
IEnumerator UseUnityWebRequest(string path)
{
//1、使用UnityWebRequest.GetAssetBundle(路径)【服务器 / 本地都可以】 去获取到网页请求
UnityWebRequest request = UnityWebRequest.GetAssetBundle(path);
//2、等待这个请求进行发送完
yield return request.SendWebRequest();
//3、发送完请求之后,就要从DownloadHandlerAssetBundle进行获取一个request,得到出来的是一个AssetBundle类对象
AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request);
//4、用获取到的AssetBundle对象去加载资源泛型是GameObject
GameObject obj = ab.LoadAsset
//5、实例化出这个GameObject对象
Instantiate(obj);
}
//第六种加载AB的方式,UnityWebRequest,网页请求进行加载【第二种方法】
IEnumerator UseUnityWebRequest2(string path)
{
UnityWebRequest request = UnityWebRequest.GetAssetBundle(path);
yield return request.SendWebRequest();
AssetBundle ab = (request.downloadHandler as DownloadHandlerAssetBundle).assetBundle;
GameObject obj = ab.LoadAsset
Instantiate(obj);
}
读取Manifest文件,获取它们的依赖关系并且加载出来
AssetBundle manifestAB = AssetBundle.LoadFromFile("AssetBundles/AssetBundles");
AssetBundleManifest manifest = manifestAB.LoadAsset
string[] strArr = manifest.GetAllDependencies("scene/cubewall.ab");
foreach (var item in strArr)
{
AssetBundle.LoadFromFile("AssetBundles/" + item);
}
【待继续往后写】