AssetBundle打包:脚本放在Editor文件夹内

具体代码如下:
using UnityEditor;
using System.IO;public class CreateAssetBundles  {[MenuItem("自定义菜单/资源打包")]static void BuildAllAssetBundles(){//定义文件夹名字string dir = "AssetBundles";//文件夹不存在,则创建if(!Directory.Exists(dir)){Directory.CreateDirectory(dir);}//资源打包
        BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);}}AssetBundle的四种方式资源加载,脚本绑在场景任意物体即可
具体代码如下:using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.Networking;public class DownLoad : MonoBehaviour {IEnumerator Start () {//资源包路径string path1 = "AssetBundles/cubewall.unity3d";//共享依赖资源包路径string path2 = "AssetBundles/share.unity3d";//第一种加载AB的方式 ,从内存中加载 LoadFromMemory#region//方法一:异步加载//加载资源AssetBundleCreateRequest request = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path1));yield return request;//加载共同依赖资源,如贴图、材质AssetBundleCreateRequest request2 = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path2));yield return request2;AssetBundle ab = request.assetBundle;AssetBundle ab2 = request2.assetBundle;//使用里面的资源GameObject wallPrefab1 = ab.LoadAsset("CubeWall");Instantiate(wallPrefab1);//方法二:同步加载(无需用协程)//加载资源AssetBundle ab3 = AssetBundle.LoadFromMemory(File.ReadAllBytes(path1));//加载共同依赖资源,如贴图、材质AssetBundle ab4 = AssetBundle.LoadFromMemory(File.ReadAllBytes(path2));//使用里面的资源GameObject wallPrefab2 = ab.LoadAsset("CubeWall");Instantiate(wallPrefab2);#endregion//第二种加载AB的方式 ,从本地加载 LoadFromFile(无需用协程)#regionAssetBundle ab5 = AssetBundle.LoadFromFile(path1);AssetBundle ab6 = AssetBundle.LoadFromFile(path2);GameObject wallPrefab3 = ab5.LoadAsset("CubeWall");Instantiate(wallPrefab3);#endregion//第三种加载AB的方式 ,从本地或服务器加载 WWW(将被弃用)#region//是否准备好while (Caching.ready == false){yield return null;}//从本地加载//WWW www = WWW.LoadFromCacheOrDownload(@"file:/E:AssetBundleProject\AssetBundleProject\AssetBundles", 1);//从服务器加载WWW www = WWW.LoadFromCacheOrDownload(@"http://localhost/AssetBundles/cubewall.unity3d", 1);yield return www;//是否报错if (string.IsNullOrEmpty(www.error) == false){Debug.Log(www.error); yield break;}AssetBundle ab7 = www.assetBundle;//使用里面的资源GameObject wallPrefab4 = ab7.LoadAsset("CubeWall");Instantiate(wallPrefab4);#endregion//第四种加载AB方式 从服务器端下载 UnityWebRequest(新版Unity使用)#region//服务器路径 localhost为IPstring uri = @"http://localhost/AssetBundles/cubewall.unity3d";UnityWebRequest request3 = UnityWebRequest.GetAssetBundle(uri);yield return request3.Send();//AssetBundle ab8 = ((DownloadHandlerAssetBundle)request3.downloadHandler).assetBundle;AssetBundle ab8 = DownloadHandlerAssetBundle.GetContent(request3);//使用里面的资源GameObject wallPrefab5 = ab8.LoadAsset("CubeWall");Instantiate(wallPrefab5);//加载cubewall.unity3d资源包所依赖的资源包AssetBundle manifestAB =  AssetBundle.LoadFromFile("AssetBundles/AssetBundles");AssetBundleManifest manifest = manifestAB.LoadAsset("AssetBundleManifest");//foreach(string name in manifest.GetAllAssetBundles())//{//    print(name);//}//cubewall.unity3d资源包所依赖的资源包的名字string[] strs =  manifest.GetAllDependencies("cubewall.unity3d");foreach (string name in strs){AssetBundle.LoadFromFile("AssetBundles/" + name);}#endregion}
}

原文地址:http://blog.sina.com.cn/s/blog_140bb6bd40102xajb.html

转载于:https://www.cnblogs.com/wuwenbo/p/7813246.html

Unity—AssetBundle的打包及四种加载资源方式相关推荐

  1. Unity AssetBundle的打包 发布 下载与加载

    码字不易,转载请注明出处哦 https://blog.csdn.net/newchenxf/article/details/124738469 1 前文 都2022了,为什么还讨论AB包?不是有Add ...

  2. 区分Activity的四种加载模式

    在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity.可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity. ...

  3. 区分Activity的四种加载模式(转)

    转自:http://marshal.easymorse.com/archives/2950 在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activi ...

  4. Activity四种加载模式

    在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity.可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity. ...

  5. Activity的四种加载模式(转载)

    在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity.可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity.这 ...

  6. 区分Activity的四种加载模式-activity

    转载:http://marshal.easymorse.com/archives/2950 在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activi ...

  7. android activity四种加载模式

    Activity之间的跳转,或者说加载一个新的Activity,一般对于开发者来说,都不是一个太难的问题.直到后来随着不断的深入,才发现原来Activity的加载还分为四种不同加载模式,让我突然有了一 ...

  8. activity的四种加载模式

    在android里,有4种activity的启动模式,分别为: standard, singleTop, singleTask和singleInstance, 其中standard和singleTop ...

  9. Android图片加载之认识bitmap的四种加载方式

    Android的Bitmap有四种高效加载方式 从获取方式分: (1)以文件流的方式 假设在sdcard下有 test.png图片 FileInputStream fis = new FileInpu ...

最新文章

  1. Ubuntu下安装为知笔记Linux版本
  2. java高位转低位注意事项,int转 short/byte溢出过程
  3. 辽宁科技大学计算机好调剂吗,2020年辽宁科技大学硕士研究生调剂办法
  4. 数据结构之动态规划问题
  5. pycharm插件之SonarLint
  6. c/c++ 求字符数组长度(非所占内存大小)
  7. evb测试板_DVT测试方案
  8. ios 键盘的一些问题
  9. matlab 音乐传奇,matlab 如何打开wav声音文件
  10. win10录屏电流声_电脑录屏出现杂音?可能是这几种原因
  11. 试验设计系列(二)| 随机分组
  12. PCB电源 - 开关电源介绍、工作原理、电路图
  13. SwiftUI学习笔记-【列表】
  14. easyui使用datagrid时deleteRow删除后行号问题
  15. uniapp中进行地图定位
  16. 【面试题 - mysql】进阶篇 - 索引
  17. bmi计算器HTML,BMI计算器(示例代码)
  18. 永恒之塔修改服务器名字,永恒之塔修改称号提升人物各种属性教程
  19. java随机获取字母,Java程序获取随机字母
  20. 分支限界法(算法分析与设计)

热门文章

  1. c#接口和抽象类的区别
  2. software on macbook pro
  3. How to publish more papaers?
  4. vmware virtualization software
  5. 在食堂吃饭是最好的解
  6. tableau暂时不支持m1芯片!期待未来!
  7. 静态函数造成GC的原因
  8. 【转】TCP、UDP数据包大小的限制
  9. ssh 错误: ssh_exchange_identification
  10. 爬虫_微信小程序社区教程(crawlspider)