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 打包是 Unity 引擎中的一项功能,它可以将游戏资源(如模型、贴图、声音等)打包成一个可供Unity项目使用的二进制文件。 在Unity中,资源一般存储在项目中的Assets文件夹下。AssetBundle打包可以将Assets文件夹下的相关资源打包成二进制文件,这样可以提高游戏加载效率和节约存储空间。使用AssetBundle打包后的资源可以在运行时动态加载,而无需把所有资源都放在游戏启动时一次性加载。 AssetBundle打包有两个主要步骤:构建AssetBundle和导入AssetBundle。 构建AssetBundle是将指定的资源打包成二进制文件的过程。在Unity编辑器中,可以通过选择要打包的资源并设置相关的打包属性,然后点击菜单中的Build选项来执行构建。AssetBundle的构建可以针对不同的平台进行,比如PC、移动设备、Web等,以便在不同平台上使用相应的AssetBundle。 导入AssetBundle是将打包好的二进制文件导入到Unity项目中的过程。导入AssetBundle时,可以通过提供AssetBundle的路径或URL来加载资源,然后通过代码将资源实例化、加载到场景中或执行其他操作。 使用AssetBundle打包可以优化游戏的性能和加载速度,特别是对于大型游戏项目或需要频繁更新资源的项目来说。通过打包资源成AssetBundle,可以实现资源的动态加载,提高游戏的流畅性和用户体验。 需要注意的是,在使用AssetBundle打包资源时,要注意打包资源的依赖关系,确保打包的资源能够正确加载和使用,并且需要注意资源的版本控制,以便在项目更新时能够正确地更新AssetBundle中的资源。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值