TexturePacker是一个非常好用的小图合并工具,介绍它的文章非常多,多数都是使用GUI工具的,但是:
安装TexturePacker会附带一个command line工具,让我们一起学习一下如何使用吧.
我一般首选在Windows下开发(不要打我),这里就只讲Windows环境的配置
1.先去这里下载安装文件,完成后一路无脑下一步,OK.
2.大家在C:\Program Files\TexturePacker\bin
目录下可以看到两个exe文件,TexturePacker.exe
和TexturePackerGUI.exe
,前者是命令行工具,后者是GUI工具.
3.默认TexturePacker
是没有加到环境变量中的,我们需要手动来,右键点击计算机->属性->高级系统设置->环境变量,找到PATH
后将C:\Program Files\TexturePacker\bin
添加到末尾,注意要在前面加;
.
4.运行cmd,输入TexturePacker
大家应该能够看到下面的内容:
如果不能的话请检查拼写和第2
步.大家可以仔细阅读一下内容,写的十分详细,用过TexturePacker的话基本上都能对应起来.
你过你看完打印出的信息的话可以发下末尾部分有三个示例,如下:
看起啦十分简单,让我们试一下吧,感谢微博小伙伴@sosoayaen发现的小秘密,使得我们可以快速的在任意位置打开命令行.找一个有这一堆图片的文件夹的上层目录,按住Shift
点击右键
,会发现一个菜单项在当前目录打开命令行
,打开后按照示例输入TexturePacker 001/*.png
,然后如示例说的:
creates out.plist and out.png from all png files in assets
trimming all files and creating a texture with max. 2048x2048px
实际情况却不完全是这样的,你可能会得到这样的错误:
卧槽,这是什么情况啊,明明就是按照官方的示例来的嘛,google完全没有任何答案啊,经过一番痛苦的实验后,终于发现了原因所在,这里不能输入:
1 |
TexturePacker 001/*.png |
而应该是这个样子:
1 |
TexturePacker 001 |
这个问题可能是由于我使用的版本太旧或使用Windows导致的,如果你没有遇到,那么最好!
本想着把所有参数都讲一遍,写到一半发现卧槽太多了,而且好些都用不到,这里挑一些常用的分析下,以下内容都有进行测试,还是比较准确的,如果有问题,欢迎指出.
注:
<...>
的选项表示含有参数需要填写.—sheet
+生成的图片名,支持png,jpg,pvr,pvr.czz,pvr.gz格式
+示例:--sheet out.png
—data
--data out.plist
—format
--format cocos2d
—auto-sd
--auto-sd
sheet
和data
名必须含有-hd
或@2x
,TP会自动生成不带后缀的sd数据.—texturepath
sheet
文件的路径前加你--texturepath image/tower
这样在plist文件中realTextureFileName
的值为image/tower/out.png
out.png
的目录—trim-sprite-name
--trim-sprite-name
这样在plist文件中001.png
会变成001
—replace
替换掉拼接图片的文件名中正则表达式匹配的字符串—ignore-files
*
或?
,但在使用bash时应避免使用通配符.先上一张cocos2d-x支持的最大图片尺寸:
还有官方的这句话:
For the developers, if you want to cross platforms and run your games smoothly, you should keep your texture sizeless than 1024*1024, that is the lowest restriction for most machines.
—width/—height
--width 100
--height 100
1 |
error: Could not fit all sprites into the sprite sheet. |
—max-width/—max-height/—max-size
--max-width 1024
--max-height 1024
前面两个等价于后面 --max-size 1024
2048
1 |
error: Sprite sheet size is too small. |
—allow-free-size
--allow-free-size
—shape-padding
2
--shape-padding 100
—border-padding
2
--border-padding 100
—padding
--padding 100
--allow-free-size
可能和你想象的不太一样—inner-padding
--inner-padding 100
—enable-rotation/diable-rotation
--enable-rotation
--diable-rotation
—trim/no-trim
--trim
no-trim
--no-trim
更安全些,我会在后面的仔细讲一下.—crop
--crop
—trim-threshold
0~255
,默认为0
.--trim-threshold
—disable-auto-alias
--disable-auto-alias
—opt
--opt RGB444
错误: error: Error in sprite: .png: Failed to load image!
解决方案: 去掉目标路径末尾的.png试试.
错误: error: Could not fit all sprites into the sprite sheet.
解决方案:
1.查看有无设置--width or --height
,这个错误通常是由于输出图片的尺寸太小导致的.
2.查看有无--max-width/--max-height/--max-size
,没有的话加上,有的话将参数值改大一些.
错误: error: Sprite sheet size is too small.
解决方案:参见上个错误中的解决方案2,--max-width/--max-height/--max-size
默认值为2048
,试着改成4096
试试,如果解决了,不要高兴,因为大多数移动设备都不支持这个尺寸,可以考虑分开打包.
错误: error: Unknown argument —XXX - please check parameters or visit http://www.texturepacker.com for newer version
解决方案: 检查XXX的拼写是否正确
问题: 程序中获得图片的尺寸与打包前不一致
解决方案: 检查参数是否含有--crop
,有的话删除,有没有--no-trim
,没有的话加上.
讲了那么多参数,其实常用的没有几个,下面这个是我最终使用的命令:
1 |
TexturePacker --sheet out.png --data out.plist --allow-free-size --no-trim --max-size 1024 --format cocos2d animation |
文章到这里就要结束了,但其实还没有完,--trim
到底为什么不建议使用?使用了会发生什么问题?它和--crop
的具体区别在哪里?plist文件中frame的路径和其他plist的重复了怎么办?程序中怎么做才能做到打包和不打包的差异最小化?金瓶梅你什么时候看完?
我后面会再写一篇文章来讲这些东西(逃).