前言
Unity的游戲很容易被人反編譯出來贤旷,然后再重新打包發(fā)布,把自己辛辛苦苦開發(fā)的游戲砾脑,抄寫的一絲不掛。很多項目要求要做好資源加密艾杏,Unity中如何做好資源加密呢韧衣?本文給大家分享加密算法+資源打包整合思路:
對惹,這里有一個游戲開發(fā)交流小組购桑,希望大家可以點擊進來一起交流一下開發(fā)經(jīng)驗呀畅铭!
游戲資源包如何選擇加密算法
游戲資源包加密的第一件事情就是選一個什么樣的加密/解密算法,比較不容易被人破解。我們?nèi)绾蝸磉x擇呢勃蜘?很遺憾的告訴大家硕噩,沒有任何一個保險的加密解密算法是安全的。杠精第一時間就會來反駁缭贡,這怎么可能炉擅,我加密了他怎么破解辉懒?游戲資源加密注定了加密算法不能用太耗時的加密算法。接下來我們來看下不同加密算法是如何被破解的谍失。
所有從上面分析來看想要不被破解眶俩,幾乎是很難,就看破解的代價快鱼。你這個游戲是否值得颠印。一般我們的目標就是不要讓人通過Unity反編譯工具就能直接讓我們的游戲直接反編譯出Unity項目工程,然后重新編譯打包發(fā)布就可以了抹竹。解密算法要快线罕,注定他不會太復(fù)雜,密鑰單一的放客戶端或是網(wǎng)絡(luò)窃判,注定能獲取到钞楼。
Assetsbundle資源包的加密與解密
分析完加密解密算法以后,接下來我們就來看下如何加密我們的資源兢孝,先來介紹第一種方案窿凤,打資源包的時候,加密單個的資源, 把加密后的數(shù)據(jù)打入到資源包跨蟹。解密的時候,從ab包中讀取資源雳殊,然后再把資源包里的內(nèi)容解密開來。具體做法如下:
(1) 新建一個類窗轩,繼承自FileStream, 重寫Read/Write函數(shù)夯秃。代碼如下:
(2) 修改ab包打包工具腳本,再對生成的ab包資源加密一次,打包加密腳本如下:
(3) 解密的時候,讀取ab包,使用函數(shù)AssetsBundle.LoadFromStream來加載痢艺,而這個會觸發(fā)Stream在Read讀數(shù)據(jù)接口調(diào)用仓洼,就可以進入我們重載的Read接口,來做解密。代碼如下:
今天的分享就到這里了堤舒,關(guān)注我們色建,可以學(xué)習(xí)更過Unity進階的一些教程。
附:視頻學(xué)習(xí)地址
https://www.bycwedu.com/promotion_channels/710180854