前言
Unity的游戏很容易被人反编译出来,然后再重新打包发布,把自己辛辛苦苦开发的游戏,抄写的一丝不挂。很多项目要求要做好资源加密,Unity中如何做好资源加密呢?本文給大家分享加密算法+资源打包整合思路:
对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!
游戏资源包如何选择加密算法
游戏资源包加密的第一件事情就是选一个什么样的加密/解密算法,比较不容易被人破解。我们如何来选择呢?很遗憾的告诉大家,没有任何一个保险的加密解密算法是安全的。杠精第一时间就会来反驳,这怎么可能,我加密了他怎么破解?游戏资源加密注定了加密算法不能用太耗时的加密算法。接下来我们来看下不同加密算法是如何被破解的。
所有从上面分析来看想要不被破解,几乎是很难,就看破解的代价。你这个游戏是否值得。一般我们的目标就是不要让人通过Unity反编译工具就能直接让我们的游戏直接反编译出Unity项目工程,然后重新编译打包发布就可以了。解密算法要快,注定他不会太复杂,密钥单一的放客户端或是网络,注定能获取到。
Assetsbundle资源包的加密与解密
分析完加密解密算法以后,接下来我们就来看下如何加密我们的资源,先来介绍第一种方案,打资源包的时候,加密单个的资源, 把加密后的数据打入到资源包。解密的时候,从ab包中读取资源,然后再把资源包里的内容解密开来。具体做法如下:
(1) 新建一个类,继承自FileStream, 重写Read/Write函数。代码如下:
(2) 修改ab包打包工具脚本,再对生成的ab包资源加密一次,打包加密脚本如下:
(3) 解密的时候,读取ab包,使用函数AssetsBundle.LoadFromStream来加载,而这个会触发Stream在Read读数据接口调用,就可以进入我们重载的Read接口,来做解密。代码如下:
今天的分享就到这里了,关注我们,可以学习更过Unity进阶的一些教程。
附:视频学习地址
https://www.bycwedu.com/promotion_channels/710180854
网友评论