TexturePacker 如何使用自帶的加密功能及在cocos2dx中的使用


在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 是動態打包的選項。

打包出來的效果是:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM