AssetBundle学习之路(五) ------ asset bundle卸载/文件校验

本文探讨了Unity中AssetBundle的卸载策略,重点介绍了AssetBundle.Unload(bool)的不同用法及其对内存的影响,并详细解释了文件校验的过程及重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • siki学院学习链接:http://www.sikiedu.com/my/course/74

1.由于下载asset bundle会保存在本地,因此需要卸载

                                              

官方卸载asset bundle介绍地址:http://www.sikiedu.com/course/74/task/1811/show




因此调用 AssetBundle.Unload(false)有可能会导致多余的内存被占用,而且只能切换场景或者使用Resources.UnloadUnusedAssets卸载,推荐使用 AssetBundle.Unload(true)
  • 卸载总结

 通常,使用assetbundle.Unload(false)不会导致理想的情况。大多数项目都应该使用assetbundle.Unload(true)来避免在内存中复制对象。


大多数项目都应该使用assetbundle.卸载(true)并采用一种方法来确保对象不会被复制。两个常见的方法是:

  1. 在应用程序的生命周期中有定义良好的点,在这个过程中,临时的assetbundle被卸载,例如在级别或加载屏幕期间。
  2. 仅当所有的组成对象都未使用时,维护个别对象的引用计数和卸载assetbundle。这允许应用程序在不重复内存的情况下卸载和重新加载单个对象。

如果应用程序必须使用assetbundle.卸载(false),那么单个对象只能以两种方式卸载:

  1. 在场景和代码中,消除对一个不需要的对象的所有引用。完成此操作之后,调用Resources.unloadunusedassets。
  2. 非附加的加载一个场景。这将销毁当前场景中的所有对象并调用资源并自动调用UnloadUnusedAssets。

2.文件校验

     从服务器asset bundle是用字节来传输的,需要一段时间来进行传输,如果再传输的过程中因为网络或者其他原因导致传输中断或者文件内容改变,就会导致下载的asset bundle不可用,因此需要文件校验来确保下载的asset bundle的准确性完整性。

     文件校验过程:

  1.  A给我传输文件前会使用某种算法生成一串校验码,连同文件一起传输过来(如果文件不完整生成的校验码是不一样的)
  2.  我这里接收完文件也会使用与A端相同的算法生成校验码
  3.  将我生成的校验码与接收到的校验码进行比较,不相同则文件有问题,相同文件则没问题

 生成校验码的算法:CRC  MD5  SHA1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千喜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值