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、将以上三个打包工具整合成一个

时间: 2024-08-21 15:23:55

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

AssetBundle打包优化解决方案

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

Linux转发性能评估与优化-转发瓶颈分析与解决方式(补遗)

补遗 关于网络接收的软中断负载均衡,已经有了成熟的方案,可是该方案并不特别适合数据包转发,它对server的小包处理非常好.这就是RPS.我针对RPS做了一个patch.提升了其转发效率. 下面是我转载的我自己的原文. 线速问题 非常多人对这个线速概念存在误解.觉得所谓线速能力就是路由器/交换机就像一根网线一样.而这.是不可能的.应该考虑到的一个概念就是延迟. 数据包进入路由器或者交换机.存在一个核心延迟操作,这就是选路,对于路由器而言.就是路由查找,对于交换机而言,就是查询MAC/port映射

Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can&amp;#39;t find referenced class问题的解决方式

Warning: can't find superclass or interface Warning: can't find referenced class 这两个问题的解决方法: 1.要把你项目中所引入的第三方jar包使用"-libraryjars 包路径"指定好. 2.还是报错的话,确保报错的类没有在你的项目中使用到,使用"-dontwarn 类名正則表達式"屏蔽警告. 完了?但是我还想问:第一步做完后还是报错,并且这个类在我项目中真的实用到,不能使用&qu

Unity AssetBundle打包与资源更新

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

小型Web页打包优化(下)

之前我们推送了一篇小型Web项目打包优化文章,(链接),我们使用了一段时间, 在这过程中我们也一直在思考, 怎么能把结构做的更好.于是我们改造了一版, 把可以改进的地方和可能会出现的问题, 在这一版中进行了优化.小伙伴们, 有没有迫不及待? 那好, 我们废话少说, 进入正题^_^ 一.背景 之前, 转转App端内有些Hybrid页面和一些端外的落地页, 一般是单个的一两个小页面, 不是所谓的大型的前端应用, 比较零散, 交互也比较简单.如果用vue或react, 有点杀鸡焉用宰牛刀的意思, 没有

[移动端]移动端上遇到的各种坑与相对解决方式

mobileHack 这里收集了很多移动端上遇到的各种坑与相对解决方式 1.问题:手机端 click 事件会有大约 300ms 的延迟 原因:手机端事件 touchstart –> touchmove –> touchend or touchcancel –> click.由于在touch事件触发之后,浏览器要推断用户是否会做出双击屏幕的操作,所以会等待300ms来推断,再做出是否触发click事件的处理.所以就会有300ms的延迟 解决方法:使用touch事件来取代click事件.如

[转] Webpack 打包优化之体积篇

谈及如今欣欣向荣的前端圈,不仅有各类框架百花齐放,如Vue, React, Angular等等,就打包工具而言,发展也是如火如荼,百家争鸣:从早期的王者Browserify, Grunt,到后来赢得宝座的 Gulp, 以及独树一帜的 fis3, 以及下一代打包神器 Rollup :在 browserify,grunt,gulp,rollup,webpack 可以一窥其中部分对比.在本文要探究的是,当前打包工具绝对霸者 Webpack. Webpack Package optimization W

【小松教你手游开发】【unity系统模块开发】Unity Assetbundle打包笔记

*最近项目更新了Unity5.5.2,顺便更新了项目的ui打包,也更新一下这边的笔记 首先打包分为两部分,一部分是打包成Assetbundle包,一部分是从Assetbundle包解包出来成为可用的资源. 首先说第一部分 打包 所有资源都可以打包,甚至不是资源(一些数据)也可以打包,只要你需要. 打包出来的东西都可以直接用,一个字体,一个Texture,一个Prefab,一个场景,都是一打出来成Assetbundle包就可以直接用,但是为什么大家还是要各自开发自己的打包流程呢? 最重要的原因就是

Webpack 打包优化之体积篇

谈及如今欣欣向荣的前端圈,不仅有各类框架百花齐放,如Vue, React, Angular等等,就打包工具而言,发展也是如火如荼,百家争鸣:从早期的王者Browserify, Grunt,到后来赢得宝座的 Gulp, 以及独树一帜的 fis3, 以及下一代打包神器 Rollup :在 browserify,grunt,gulp,rollup,webpack 可以一窥其中部分对比.在本文要探究的是,当前打包工具绝对霸者 Webpack. Webpack Package optimization W