AssetBundle打包优化解决方案

第一阶段:AssetBundle出一套解决方案

1、解决现在同一个资源打2个bundle的冗余问题

2、测试验证节省资源的比率是多少

问题拆分

一、bundle重复

问  题  :相同资源拆分问题?

解决方案:1、制作场景时将相同部分分开

制作方法:将每个场景相同部分放到同一个目录,不同部分保留在场景中

打包方法:a、打成独立的bundle,不同部分放到每个场景中打成bundle

b、用xml记录下每个场景中公共部分的transform,bundle名称、资源名称、父节点信息

优    点:打包工具的实现方便、快捷

缺    点:制作时对美术有一定要求,尤其在添加新的场景

2、将场景中对象分为资源对象和骨架对象,资源对象用tag标记为Element。

资源对象:每一个资源对象生成独立的预设,形成新的公共的bundle。

骨架对象:和正常的场景打包一样。

制作方法:每个场景正常制作,将场景中对象分为资源对象和骨架对象,资源对象用tag标记为Element。

打包方法:a、直接对场景打包,打包时根据tag生成不同的bundle

b、用xml记录每个场景中每个gameobject transform、bundle名称、父节点信息

优    点:只要设置tag,不需区分是否是公共资源

缺    点:打包工具的实现比较复杂

xml文件格式:

<Bundle name = "" count = "">

<Element name= "" parentname = ""  localtran=",,,,,,,,,"> </Element>

<Element name= "" parentname = ""  localtran=",,,,,,,,,"> </Element>

</Bundle>

综上所说,我们将用方案2进行编写并实现。

二、验证百分比

解决方案: 节省资源百分比 = 1 - (上面两种方式打bundle中的任一种bundle的大小/传统方式bundle大小 *100%);

一个场景时:

场  景:90001

比  较:1、传统打bundle大小(一个文件)      :90001.assetBundles:3.83MB

2、使用方案二打bundle大小(三个文件):90001.assetBundles :846KB

common_sub.assetBundles:3.39MB

90001.txt          : 81KB

共 4.28MB

百分比:1 - 4.28 / 3.83 = -11.7%;

结  论:bundle大小与在场景中使用相同资源对象数量无关,与文件多少有关

两个场景时:

场景:90001 11001

比较:1、传统打bundle大小(两个文件):     90001.assetBundles : 3.83 MB

11001.assetBundles : 4.82 MB

共 8.65MB

2、使用方案二打bundle大小(五个文件):90001.assetBundles :846KB

11001.assetBundles :526KB

common_sub.assetBundles:4.93MB

11001.txt          : 248 KB

90001.txt          : 81KB

共 6.60MB

百分比:1- (6.60 / 8.65) = 13.7%;

结论:bundle大小与两个场景中复用相同资源对象有关,场景越多,复用相同资源对象越多,bundle的总的大小相对越小

=========================================================================================================

第二阶段:AssetBundle场景打包工具

一、完善打包工具

1、将场景打包工具整合到一起

二、加载assetbundle到场景中

1、加载场景assetbundle资源

2、加载xml文件

3、加载公共assetbundle资源

=========================================================================================================

第三阶段: assetbundle加版本号 和其它

一、assetbundle加版本号 和其它

1、将assetbundle放到txt文件中,实现读取和写入

2、添加新的assetbundle输出路径

=========================================================================================================

第四阶段:Assetbundle打包区域地图的场景 

1、研究区域地图引擎bake的navmesh和lightmap动态加载问题

2、编写区域地图打包工具

3、navmesh、lightmap、以及场景三个打包工具

4、将以上三个打包工具整合成一个

AssetBundle打包优化解决方案,布布扣,bubuko.com

时间: 2024-08-27 22:59:11

AssetBundle打包优化解决方案的相关文章

AssetBundle打包优化解决方式

第一阶段:AssetBundle出一套解决方式 1.解决如今同一个资源打2个bundle的冗余问题 2.測试验证节省资源的比率是多少 问题拆分 一.bundle反复 问  题  :同样资源拆分问题? 解决方式:1.制作场景时将同样部分分开 制作方法:将每一个场景同样部分放到同一个文件夹,不同部分保留在场景中 打包方法:a.打成独立的bundle,不同部分放到每一个场景中打成bundle b.用xml记录下每一个场景中公共部分的transform,bundle名称.资源名称.父节点信息 优    

unity3d assetbundle打包策略

由于assetbundle打包存在依赖的问题,所有资源要进行合理的分包 零.代码 代码都放在本地,包括NGUI等插件的代码.shader代码 一.单位 单位的模型贴图.动画一起打包 二.UI 1.公用图集一起打包(UIAtlas.prefab.UIAtlas.mat.UIAtlas.png)在进入游戏的时候加载并且常驻内存 2.(依赖公共图集)面板图集和面板预设一起打包  在切换场景的时候加载场景所需要的面板图集 三.场景 1.场景公用的贴图和预设一起打包 一种风格的场景有一个公用依赖资源包 2

Unity AssetBundle打包与资源更新

Unity的AssetBundle打包是一件让人头疼的事情,当我接手这项工作时,我以为最多只用两个周就可以把整个打包和资源热更新的流程搞定,结果还是花了一个月,期间踩坑无数,总结出来希望能够节约别人的时间. (一)你的游戏项目是什么类型的? 在开始写打包的Editor脚本之前,你最好先详细考察一下你们的游戏项目是什么类型?是端游,手游还是页游?因为这三者涉及到bundle包的资源管理策略截然不同,如果你们是跨平台发布,那我建议你最好用宏来切换管理策略. 我先分享一下我曾经接手过打包工作的两个项目

Unity3d 5.x AssetBundle打包与加载

1.AssetBundle打包 unity 5.x版本AssetBundle打包,只需要设置好AssetBundle的名称后,unity会自动将其打包,无需处理其他,唯独需要做的是设置好个AssetBundle的名称. 注意:AssetBunlde的名称只能设置小写字母,即使你写成大写也会被自动转置成大写字母,而且名称中支持"/",如:"AssetBundles/cube.unity3d",.unity3d的后缀是自己设置的,可以不设置 代码: using Unit

一个灵活的AssetBundle打包工具

尼尔:机械纪元 上周介绍了Unity项目中的资源配置,今天和大家分享一个AssetBundle打包工具.相信从事Unity开发或多或少都了解过AssetBundle,但简单的接口以及众多的细碎问题也给工作带来较多的困扰.今天分享AssetBundle工具的实践与想法,相信这块内容对帮助理解AssetBundle有较大的帮助. Unity提供了两种资源加载方式,一种是Resources,另外种就是AssetBundle.所有的资源只要放在Resources目录下,在打包的时候会自动打进去,并可以通

Assetbundle 打包加载及服务器加载等(采用unity3d5.0后的新版)

Assetbundle为资源包不是资源 打包1:通过脚本指定打包 AssetBundleBuild ab = new AssetBundleBuild { assetBundleName = PlayerSettings.bundleVersion + "@" + "zhao",//资源包assets的名字 assetNames = new string[1],  //包里的每个资源的名字 }; string outputPath = Path.Combine(Ut

小菜鸟mysql优化解决方案

根据小菜鸟的个人习惯,自己的编写的一套MYSQL优化方案,感觉还是有点儿菜,望大家谅解,不足之处,请大神们互动! #mysql优化解决方案 #公共参数默认值: max_connections = 151 #同事处理多大连接数,推荐设置最大连接数是上限连接数的80%左右 sort_buffer_size = 2M #查询排序时缓冲区大小,只对order by和group by起作用,可增大此值为16M open_files_limit = 1024 #打开文件数限制,如果show global s

[cb] Assetbundle打包(一)

Unity的Assetbundle是Unity Pro提供的功能. 理解:Asset 资源,资产:Bundle :包,一批,捆:字面上的意思,就是把资源打包. 在项目中的实际应用:Art工程,Prefab打包成AssetBundle到Produect目录,Client工程读取AssetBundle; 下面这张图是Art工程 放在Product目录下的Prefab都会打包成AssetBundle 打包AssetBundle到Product目录下[Assetbundle有运行平台之分] Client

java处理大数据的一个优化解决方案

之前和大家提过我们公司现在在做一个手机应用商店的项目,之前测过平均每分钟有2000条请求,每秒就是50左右,现在肯定更多,数据量大的时候每秒有400~500条sql插入操作(记录用户行为,每个请求都会将信息写入log表),然后我们目前是还没有用hadoop之类的分布式,服务器好像内存是8G,CPU是16核的,这些差不多就是现在的情况,经常导致连接超时,之前也做过一些优化点击查看 大数据优化,今天又优化了下.之前是从配置和服务器层面,这次是代码层面. 上面我说过每条请求进来我们都会将用户信息插入到