在cocos2dx中使用纹理图集是非常节省资源的,在这里推荐 TexturePacker,而且 TexturePacker工具的加密接口也非常的好用,下面就来介绍一下。。。
TexturePacker 工具的加密,只是相对于一般使用的基础上增加了几步对密码操作的步骤(目前的加密功能仅适用于.pvr.ccz格式):
一、生成密码(图形化界面和命令行两种方式)
方式一:图形化界面生成密码
bubuko.com,布布扣
密码可以自己手动过输入,或者使用下面的这几个按钮,完后点击外面的空白区域就自动保存了。。。
(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" \
bubuko.com,布布扣
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" \
bubuko.com,布布扣
至此,加密操作便是完了,密码是 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".plist2 --sheet "$2".$6 \
为:
1 --data "$2"_{n}.plist2 --sheet "$2"_{n}.$6 3 --multipack \
上面脚本中的 _{n}是占位符,用来增加文件名用的, --multipack 是动态打包的选项。
打包出来的效果是:
bubuko.com,布布扣
TexturePacker 工具的加密,只是相对于一般使用的基础上增加了几步对密码操作的步骤(目前的加密功能仅适用于.pvr.ccz格式):
一、生成密码(图形化界面和命令行两种方式)
方式一:图形化界面生成密码
bubuko.com,布布扣
密码可以自己手动过输入,或者使用下面的这几个按钮,完后点击外面的空白区域就自动保存了。。。
(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" \
bubuko.com,布布扣
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" \
bubuko.com,布布扣
至此,加密操作便是完了,密码是 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".plist2 --sheet "$2".$6 \
为:
1 --data "$2"_{n}.plist2 --sheet "$2"_{n}.$6 3 --multipack \
上面脚本中的 _{n}是占位符,用来增加文件名用的, --multipack 是动态打包的选项。
打包出来的效果是:
bubuko.com,布布扣