- 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(true)
- 卸载总结
通常,使用assetbundle.Unload(false)不会导致理想的情况。大多数项目都应该使用assetbundle.Unload(true)来避免在内存中复制对象。
大多数项目都应该使用assetbundle.卸载(true)并采用一种方法来确保对象不会被复制。两个常见的方法是:
- 在应用程序的生命周期中有定义良好的点,在这个过程中,临时的assetbundle被卸载,例如在级别或加载屏幕期间。
- 仅当所有的组成对象都未使用时,维护个别对象的引用计数和卸载assetbundle。这允许应用程序在不重复内存的情况下卸载和重新加载单个对象。
如果应用程序必须使用assetbundle.卸载(false),那么单个对象只能以两种方式卸载:
- 在场景和代码中,消除对一个不需要的对象的所有引用。完成此操作之后,调用Resources.unloadunusedassets。
- 非附加的加载一个场景。这将销毁当前场景中的所有对象并调用资源并自动调用UnloadUnusedAssets。
2.文件校验
从服务器asset bundle是用字节来传输的,需要一段时间来进行传输,如果再传输的过程中因为网络或者其他原因导致传输中断或者文件内容改变,就会导致下载的asset bundle不可用,因此需要文件校验来确保下载的asset bundle的准确性完整性。
文件校验过程:
- A给我传输文件前会使用某种算法生成一串校验码,连同文件一起传输过来(如果文件不完整生成的校验码是不一样的)
- 我这里接收完文件也会使用与A端相同的算法生成校验码
- 将我生成的校验码与接收到的校验码进行比较,不相同则文件有问题,相同文件则没问题
生成校验码的算法:CRC MD5 SHA1