1. 程式人生 > >cocos2dx 3.0 使用TexturePacker對圖片資源加密

cocos2dx 3.0 使用TexturePacker對圖片資源加密

       遊戲開發過程中要涉及到大量的圖片,使用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);

這樣我們就可以正常的使用加密過的圖片了,