bundle内存 unity_技巧 | AssetBundle进阶内存优化(Unity 4.x)

众所周知,在Unity 4.x版本中,当需要打包成AssetBundle的资源存在层级引用的时候,需要使用BuildPipeline.PushAssetDependencies等相关函数将资源拆分并建立引用关系,然后在加载的时候按照相反的顺序,先加载依赖文件,再加载目标文件的顺序,将数据还原出来,并自动关联好引用关系。在此过程中第一个加载的文件不能调用AssetBundle.UnLoad(false),即在该过程中,会一直有第一个文件的内存映射冗余在内存中,这对于宝贵的手机内存来说是十分致命的。当然我们也可以自我管理引用关系来规避这种冗余。下文我们将举例来说明。

这是侑虎科技第81篇原创文章,感谢作者邓陶然(QQ:20545018)供稿。欢迎转发分享,未经作者授权请勿转载。同时如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。(QQ群:793972859)

测试环境(Unity 4.7 + NGUI)

在项目中,我们用NGUI制作了2个UI,分别是a.prefab 和b.prefab,它们都使用了一张名为c.png的贴图(这种现象在开发中非常常见,很多时候可能是数十个UI Prefab使用了同一张贴图)。我们使用依赖项打包,打包的结果分别是3个文件:

我们可以看到,在文件层面上已经没有冗余了,a.bundle及b.bundle都没有贴图的资源,贴图的资源都在c中。

按照常规的加载过程使用如下代码:

WWW wwwc = new WWW("file://c.bundle");

yield return wwwc;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值