在cocos2dx中使用紋理圖集是非常節省資源的,在這里推薦 TexturePacker,而且 TexturePacker工具的加密接口也非常的好用,下面就來介紹一下。。。
TexturePacker 工具的加密,只是相對於一般使用的基礎上增加了幾步對密碼操作的步驟(目前的加密功能僅適用於.pvr.ccz格式):
一、生成密碼(圖形化界面和命令行兩種方式)
方式一:圖形化界面生成密碼

密碼可以自己手動過輸入,或者使用下面的這幾個按鈕,完后點擊外面的空白區域就自動保存了。。。
(2)shell腳本命令行生成密碼
1>、首先安裝 commandline Tool, 菜單欄 -> Install commanndLine Tool
2>、參照 不忘初“辛”的帖子 http://www.cnblogs.com/flyFreeZn/p/3587770.html,寫 生成圖集的腳本,並在此基礎上增加 加密操作:
1 # next line is encrypt command option 2 # --content-protection "11111112122222223333333344444444" \
1 #! /bin/bash 2 3 CURRENT_DIR=`dirname $0` 4 5 # input paths 6 IMAGE_DIR=$CURRENT_DIR/imgs/ 7 8 # path that game proj use 9 GAME_IMAGE_PATH=$CURRENT_DIR/ 10 11 # path of the texture packer command line tool 12 TP=/usr/local/bin/TexturePacker 13 14 # $1: Source Directory where the assets are located 15 # $2: Output File Name without extension 16 # $3: RGB Quality factor 17 # $4: Scale factor 18 # $5: Max-Size factor 19 # $6: Texture Type (PNG, PVR.CCZ) 20 # $7: Texture format 21 # $8: encrypt key, Key: 128 bit, 32 hex digits [A-F0-9] 22 pack_textures() { 23 24 ${TP} --smart-update \ 25 --texture-format $7 \ 26 --format cocos2d \ 27 --data "$2".plist \ 28 --sheet "$2".$6 \ 29 --maxrects-heuristics best \ 30 --enable-rotation \ 31 --scale $4 \ 32 --shape-padding 1 \ 33 --max-size $5 \ 34 --opt "$3" \ 35 --trim \ 36 --premultiply-alpha \ 37 38 --content-protection $8 \ 39 $1/*.png 40 41 } 42 43 # do the job 44 for i in $IMAGE_DIR/* 45 do 46 if [ -d $i ] 47 then 48 spriteSheetName=`basename $i` 49 pack_textures $i $GAME_IMAGE_PATH/$spriteSheetName 'RGBA8888' 1 2048 'pvr.ccz' "pvr2ccz" "12345678123456781234567812345678" 50 fi 51 done 52 53 # next line is encrypt command option 54 # --content-protection "12345678123456781234567812345678" \
至此,加密操作便是完了,密碼是 12345678123456781234567812345678。
二、在cocos2dx中讀取圖集:
1、由於在cocos2dx引擎中集成了圖集解密所需要的 ZipUtils類,所以不用引入直接使用就好。。。
2、在游戲還沒有使用圖集之前進行解密
1 // 圖集解密 12345678123456781234567812345678 2 ZipUtils::setPvrEncryptionKey(0x12345678, 0x12345678, 0x12345678, 0x12345678);
3、然后,然后就正常使用就好啦,我貼出我在Lua中的使用:
1 local spriteFrameCache = cc.SpriteFrameCache:getInstance() 2 spriteFrameCache:addSpriteFramesWithFile("tmp/texture_tmp.plist", "tmp/texture_tmp.pvr.ccz")
以上使用的cocos2dx的版本為 v3.2,TexturePacker版本為。。。額,裝完命令行工具就找不到版本號了。。。
內容更新:
在上面的博客中介紹到了使用命令行來加密圖集,在使用的過程中我又發現了使用命令行新的有用的命令。。。
上面的命令行可以實現對一個所有處在同一目錄下的資源進行打包,但是不能進行遞歸打包,那么就有了接下來的命令選項。。。
在上面的命令中 更改
$1/*.png
為:
$1
即將索引到圖片改為索引到上級目錄文件夾,這樣的話就可以實現遞歸文件目錄打包,但是有個問題,當要打包的所有圖片過多或者過大而使一個圖集裝不下的情況時,需要進行動態遞增打包,使用下面的命令
更改原來的
1 --data "$2".plist\ 2 --sheet "$2".$6 \
為:
1 --data "$2"_{n}.plist\ 2 --sheet "$2"_{n}.$6 \ 3 --multipack \
上面腳本中的 _{n}是占位符,用來增加文件名用的, --multipack 是動態打包的選項。
打包出來的效果是:

