cocos2dx 3.0 使用TexturePacker對圖片資源加密
阿新 • • 發佈:2019-01-23
遊戲開發過程中要涉及到大量的圖片,使用TexturePacker可以把小圖合成大圖。這是我們使用最多的功能,但是TexturePacker還帶有對圖片加密的功能。之前還是對加密不慎瞭解,今天在網上搜了下然後自己親手寫了,所以寫下來分享下。
把圖片匯入到TexturePacker中:
在上面的圖片已經標註的很詳細了。
>----- Create new key 是系統隨機金鑰
>----- Clear/DIsable 啟用、關閉圖片加密功能
>----- Save as global key 將金鑰作為全域性的金鑰,以後對其他的圖片加密直接點選use global key就行
>----- Use global key 使用儲存的全域性金鑰
點選Save
點選Publish。把生成的plist和ccz檔案複製到資原始檔夾下面就行了。
由於使用的cocos2dx 3.0的版本不需要更新ZipUtils檔案。同樣TestCpp中也有示例:\cocos2d-x-3.0\tests\cpp-tests\Classes\TexturePackerEncryptionTest
在教程中使用的金鑰為:
2528bd78 112d53ef fa5e5fb2 b7a5b25a (加密的 必須是32位十六進位制值)
中間的空格我手動新增的,因為在程式中使用需要把32位金鑰分成4個十六進位制的值。我們可以在cocos2dx的AppDelegate中新增設定金鑰,或者在我們使用的位置新增。
本示例在AppDelegate中新增的
用到的標頭檔案:
#include "cocos/2d/ZipUtils.h"
bool AppDelegate::applicationDidFinishLaunching() { // initialize director .............. // 2528bd78 112d53ef fa5e5fb2 b7a5b25a (加密的 必須是32位十六進位制值) ZipUtils::setPvrEncryptionKeyPart(0, 0x2528bd78); ZipUtils::setPvrEncryptionKeyPart(1, 0x112d53ef); ZipUtils::setPvrEncryptionKeyPart(2, 0xfa5e5fb2); ZipUtils::setPvrEncryptionKeyPart(3, 0xb7a5b25a); // 或者按照這種方式新增 //ZipUtils::setPvrEncryptionKey(0x2528bd78, 0x112d53ef, 0xfa5e5fb2, 0xb7a5b25a); auto scene = TexturePackageEnvryption::scene(); // run director->runWithScene(scene); return true; }
對金鑰設定完成。
在我們程式中具體使用如下:
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("TexturePackageEncryption/role.plist", "TexturePackageEncryption/role.pvr.ccz");
auto spriteRole = Sprite::createWithSpriteFrameName("1.png");
spriteRole->setPosition(Point(240, 320));
this->addChild(spriteRole);
這樣我們就可以正常的使用加密過的圖片了,