AssetBundle加载和销毁机制

AssetBundle内存管理

Unity3D在手机及其他平台下占用内存太大,这里写下关于Unity3D对于AssetBundle内存的管理与优化。

AssetBundle加载和销毁图

优化之前,先要清楚AssetBundle的加载和销毁原理。
在这里插入图片描述
ab包源文件,分为存放服务器端和客户端两种情况,存放在服务器端需要用WWW来远程加载。一般来讲,我们会吧ab包源文件放在客户端,使用AssetBundle.LoadFromFile或AssetBundle.LoadFromFileAsync加载,每次新登录比对ab包源文件和服务器上文件版本的差别,更新下载最新的ab包到本地,实现资源的热更新。

Unity系统在加载新场景时,所有的内存对象都会被自动销毁,包括你用AssetBundle.LoadAsset加载的对象和Instaniate克隆的。

但是不包括AssetBundle文件自身的内存镜像,那个必须要用Unload来释放,用.net的术语,这种数据缓存是非托管的。

AssetBundle加载分为三个部分

  1. 从文件中加载到内存镜像中,一般使用AssetBundle.LoadFromFile或AssetBundle.LoadFromFileAsync;
  2. 从内存镜像读取,加载到内存中,使用AssetBundle.LoadAsset来完成;
  3. 从内存中克隆一份到游戏场景中,使用UnityEngine.Object.Instantiate来完成。

AssetBundle相关对象销毁的几个方法

  1. 使用Instantiate克隆出来的具体对象,使用Destory来销毁;
  2. AssetBundle.Unload(false)释放AssetBundle文件内存镜像;
  3. AssetBundle.Unload(true)释放AssetBundle文件内存镜像同时销毁所有已经LoadAsset的Assets内存对象;
  4. Reources.UnloadAsset(Object)显式的释放已加载的Asset对象,只能卸载磁盘文件加载的Asset对象;
  5. Resources.UnloadUnusedAssets用于释放所有没有引用的Asset对象。

AssetBundle 和 Resource 的区别与联系

Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。 Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时动态加载,可以指定路径和来源的。

AssetBundle作为Unity官方推崇的资源更新方案,与传统的Resource差异如下:

  1. Resource放在Resources目录下,resources.assets文件,单个文件有2GB限制,首次必须全部下载;
  2. AssetBundle创建需要通过Editor脚本创建,支持动态下载,是Unity Web Caching License唯一可以缓存的内容;
  3. AssetBundle的适用平台与跨平台性。

AssetBundle适用于多种平台,包括网页应用、移动应用、桌面应用等,可以动态更新,但不同平台所使用的AssetBundle并不相同,在创建离线AssetBundle的时候需要通过参数来指定目标平台。

AssetBundle是Unity pro提供的一种用来存储资源的文件格式,它可以存储任意一种Unity引擎能够识别的资源,如Scene、Mesh、Material、Texture、Audio、noxss等等,同时,AssetBundle也可以包含开发者自定义的二进制文件,只需要将自定义文件的扩展名改为.bytes,Unity就可以把它识别为TextAsset,进而就可以被打包到AssetBundle中。Unity引擎所能识别的资源我们称为Asset,AssetBundle就是Asset的一个集合。

AssetBundle的特点:压缩(缺省)、动态载入、本地缓存;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值