关于AssetBundle的加载与卸载

一、如何下载AssetBundle
   1、非缓存机制——通过创建一个WWW实例来对AssetBundle文件进行下载。下载后的AssetBundle文件将不会进入Unity引擎特定的缓存区。
   2、缓存机制——通过WWW.LoadFromCacheOrDownload接口来下载AssetBundle文件。下载后的AssetBundle文件将自动被存放在Unity引擎特定的缓存区内,该方法是Unity推荐的AssetBundle文件下载方式。(目前,对于发布到WebPlayer上的网页游戏,默认缓存大小为50MB;对于发布到PC上的客户端游戏和发布到iOS/Android上的移动游戏,默认缓存大小为4CB。
二、如何加载AssetBundle
   1、WWW.assetBundle
——可以通过WWW.assetBundle属性来创建一个AssetBundle文件的内存对象。
   2、AssetBundle.CreateFromFile——通过该接口可以从磁盘文件创建一个AssetBundle文件的内存对象。需要注意的是,该方法仅支持非压缩格式的AssetBundle,即在创建AssetBundle时必须使用UncompressedAssetBundle选项。
   3、AssetBundle.CreateFromMemory——通过该接口可以从内存数据流创建AssetBundle内存对象。例如,当用户对AssetBundle进行加密时,可以先调用解密算法返回解密后的数据流,然后通过AssetBundle.CreateFromMemory从数据流创建AssetBundle对象。
三、如何从AssetBundle中加载Assets
   1、AssetBundle.Load。
   2、AssetBundle.LoadAsync。
   3、AssetBundle.LoadAll。

四、如何从场景AssetBundle中加载Assets
   1、Application.LoadLevel。
   2、Application.LoadLevelAsync。
   3、Application.LoadLevelAdditive。
   4、Application.LoadLevelAdditiveAsync。
五、AssetBundle内存管理

六、如何卸载AssetBundle
   1、AssetBundle.Unload接口。
七、如何卸载从AssetBundle中加载的Assets
   1、AssetBundle.Unload(true)。
   2、Resources.UnloadUnusedAssets()——该接口会卸载掉所有没有使用的Assets。需要强调的是,它的作用范围不仅是当前的AssetBundle,而是整个系统,而且它也不能卸载掉从当前AssetBundle文件中加载的仍在使用的Assets。

八、如何卸载GameObject
   1、对于由CameObject.Instantiate接口实例化出的CameObject,Unity提供了CameObject.Destroy或CameObject.DestroyImmediate接口来将其卸载。Unity推荐使用CameObject.Destroy接口,如果使用该接口,Unity会将真正的删除操作延后到一个台适的时机统一进行处理,但是会在渲染之前进行。
九、WWW、AssetBundle及Asset的关系
   1、关系图:
   
   2、如图所示,WWW对象和通过WWW.assetBundle属性所加载的AssetBundle对象会对WebStream数据持有引用,同时AssetBundle也会引用到从它所加载的所有Assets。值得一提的是,真正的数据都是存放在WebStream数据中,如纹理、模型等,而WWW和AssetBundle对象只是一个结构指向了Web Stream数据。
   3、对于WWW对象本身,可以使用www = null或WWW.Dispose()来进行卸载。二者的效果一样,只是www =null不会及时引起内存释放操作,而是在系统自动垃圾回收时进行释放;而
WWW.Dispose()会及时调用系统的垃圾回收操作来进行内存释放。WWW对象释放后,其对于WebStream数据的引用计数也会相应减1。
    4、对于WebStream数据,其所占用的内存会在其引用计数为0时,自动被系统进行释放。如上图中,当AssetBundle对象以及WWW对象被释放后,WebStream数据所占用的内存也会被系统自动回收。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值