zoukankan      html  css  js  c++  java
  • 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、将以上三个打包工具整合成一个

  • 相关阅读:
    用Python计算最长公共子序列和最长公共子串
    两个有序数列,求中间值 Median of Two Sorted Arrays
    python判断平衡二叉树
    经验之谈:如何为你的机器学习问题选择合适的算法?
    跑道没了,它们还在跑:澳门赛狗业的遗孤
    钉钉:工作的归工作,生活的…也归工作?
    假·照骗,真·社交焦虑
    苹果市值破万亿,iPhone 会涨价吗?
    写日志(log)
    多维数组排序
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7070654.html
Copyright © 2011-2022 走看看