Unity3D研究院之加密Assetbundle不占内存(一百零五)

Posted nafio

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D研究院之加密Assetbundle不占内存(一百零五)相关的知识,希望对你有一定的参考价值。

https://www.xuanyusong.com/archives/4607

 

 

AssetBundle.LoadFromMemory基本上是无法在手机上用的,因为要多占一份内存,所以大多Unity项目都不进行资源加密。
Unity2017.2提供了一个新的API AssetBundle.LoadFromStream,通过名字就可以知道它是流加载,那么就不会像AssetBundle.LoadFromMemory那样多占一份很大的内存了。

打包Assetbundle的同时生成加密文件的两个文件分别加载它。

myab.unity3d
encypt_myab.unity3d

这里测试的Assetbundle一共有20M, 使用LZ4压缩格式。

加密和解密我这里随便写个简单的异或 ^ 。后面也可以用一些更好的算法,总之加密可以慢,但是解密一定要快。

界面上放两个Image 分别加载它。

如下图所示,在iPhone7上,基本上加载时间差不多。

技术图片
加密以后资源就无法被打开了。
技术图片

注意:android下的streamingAssets目录不能使用,因为android下是放在jar里并不是文件系统。一定要用的话需要拷贝到 Application.persistentDataPath下。

以上是关于Unity3D研究院之加密Assetbundle不占内存(一百零五)的主要内容,如果未能解决你的问题,请参考以下文章

unity3d AssetBundle包加密

Unity3D内容加密保护

Unity3D初学加密技巧(反破解)

unity3d中StreamingAssets和Resources目录的区别

unity3d开发2d游戏中Assetbundle有啥作用

Unity3d 使用Assetbundle合并项目的几点注意