关于AssetBundle
命名
不同的类型放到不同的文件夹下面
斜杠可以划分目录结构:scenes/wall
策略
按照逻辑实体打包,如一个UI一个,一个模型一个,一个场景
按照类型打包,如所有音效,所有shader
同时加载的资源放到一个包
共享的资源放到一个包,如场景共享部分
同一个资源的多个版本,用不同后缀
压缩
LZMA压缩方式是一种默认的压缩形式,这种标准压缩格式是一个单一LZMA流序列化数据文件,并且在使用前需要解压缩整个包体。LZMA压缩是比较流行的压缩格式,能使压缩后文件达到最小,但是解压相对缓慢,导致加载时需要较长的解压时间。
LZ4压缩方式Unity支持LZ4压缩,能使得压缩量更大,而且在使用资源包前不需要解压整个包体。LZ4压缩是一种“Chunk-based”算法,因此当对象从LZ4压缩包中加载时,只有这个对象的对应模块被解压即可,这速度更快,意味着不需要等待解压整个包体。LZ4压缩格式是在Unity5.3版本中开始引入的,之前的版本不可用。
不压缩的方式打包后包体会很大,,导致很占用空间,但是一旦下载Assetbundle,访问非常快。不推荐这种方式打包,因为现在的加载功能做的很友好了,完全可以用加载界面来进行后台加载资源,而且时间也不长。
代码思路过程
检测沙盒
如果App大版本不同,则需要对沙盒就行清空操作
分析APP内的补丁清单
分析沙盒内的补丁清单
分析网络上的补丁清单
对比游戏版本
大版本不同直接去更新大包
获取下载列表
通过对比清单获取下载文件列表
下载网络文件到沙盒
下载网络补丁清单到沙盒
下载结束
销毁
AssetBundle.Unload(false): 释放AssetBundle文件内存镜像
AssetBundle.Unload(true): 释放AssetBundle文件内存镜像同时销毁所有已经Load的Assets内存对象
Resources.UnloadAsset(Object): 显式的释放已加载的Asset对象,只能卸载磁盘文件加载的Asset对象
Resources.UnloadUnusedAssets(): 用于释放所有没有引用的Asset对象
Destroy():可用于销毁gameobject, component或asset。
GC.Collect()强制垃圾收集器立即释放内存
文章评论