AB打包策略 流程

       在我们玩游戏的时候,多多少少会去更新一些东西,这个就是热更,更新我们需要增加或者更改的资源。废话不多说,直接说内容。

        更新的流程:

1:设置打包资源名字和后缀

2:打包资源,会去区分不同的平台去进行打包

3:清空资源名字和后缀,目的是防止下次打包打混,重复出包

4:生成版本文件,文件中有所有资源的信息,例如依赖项,MD5码等等

   注意:

1:上边的打包流程也可以换成3124,清完使用跟用完清没有很大的区别

2:包名都是用路径来做AB包名,目的防止重复,要不然两个一样包名的物体会打进一个包,不方便后续使用

打包规则:

按照类型:根据文件夹,比如模型,图片,动画

扫描二维码关注公众号,回复: 16064951 查看本文章

按照功能:同一个模型文件夹下可能有场景资源,人物资源,敌人资源,根据不同的功能进行打包

按照模块:比如我们玩家模型1-10级,或者不同的阶段需要不同模型,我们就按照模块进行打包。公共的资源单独打一个包;

每个特效和他所依赖的材质贴图达成一个包

代码可以分功能打包(不超过3M)

同时使用的尽量打成一个包

把小图集合成大图集打成一个包(ICON)

热更底层原理

热更的流程  

1:当我们第一次进入游戏时候

         会去判断有没有P目录,一般是没有,会去创建,然后读取我们S目录的版本文件,把文件中所有资源信息复制到P目录,最后把版本文件也写进去

2:当我们多次进入游戏的时候,就开始开携程检查是否更新

       序列化读取P目录的版本文件,将所有ab包信息缓存入字典中。然后向资源服务器申请下载最新版本文件,下载完成后解析从服务器上下载下来的版本文件,比对P目录版本文件上 版本号和刚下载下来的版本号。

         如果版本号一样,说明不需要更新。版本号不一样,需要更新。

           不一样的时候,开始循环比对缓存池和服务器上文件MD5码 ,把不一样的和没有的放入更新的集合中,说明需要去更新和下载的,在循环外面,遍历需要更新的资源集合,从服务器进行下载,存入P目录,最后写入最近新的版本文件。

        

各个项目实际数据列表,定点数,面数,占用内存  (代码)

Unity 获取场景所有的面数,顶点数 - 剑起苍穹 - 博客园

图片压缩格式,压缩比率,不同平台采用不同的压缩格式,压缩比例

Unity常见的几种图片压缩方式:DXT、ETC、ASTC - 草莓♭布丁 - 博客园

LZ4 LZMA压缩的不同

可以看出lzma的压缩大小比lz4小。所以加载lzma的速度会快,lz4的速度会慢

压缩比这里lzma大概再17%左右,lz4再35%左右,所以压缩率lz4会高

压缩时间lzma会远远高于lz4.

解压缩时间也是。所以可以得知lzma的解压缩时间比lz4慢。lz4的解压缩时间比较快。

所以、总结是lzma的解加载速度比较快,lz4的解压缩时间比较快。但是从压缩比和速度来看lz4会更优 

  1. LZMA: 压缩最小,解压慢,用一个资源要解压包下所有资源。
  2. LZ4: 压缩稍大,解压快,用什么解压什么,内存占用低,更建议使用。

参考:https://blog.csdn.net/llsansun/article/details/86215830

        

猜你喜欢

转载自blog.csdn.net/weixin_60291221/article/details/128328553