首页 > 代码库 > AssetBundle打包优化解决方案
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、将以上三个打包工具整合成一个
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、将以上三个打包工具整合成一个
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。