一款游戏会用到不少图片资源,一般咱们会使用TexturePacker工具进行图片的拼接、压缩,为了考虑性能问题,单个SpriteSheet的尺寸不会设置的太大(最大1024 * 1024),这样就可能会有多个SpriteSheet。每当有图片资源须要更新时,操做起来会有点不方便。因此但愿能经过bat来批量从新生成新的SpriteSheethtml
首先咱们须要获取TexturePacker的安装目录,通常咱们都会安装TexturePackerGUI工具,它实际运行起来仍是调用TexturePacker.exe工具。由于软件环境因人而异可能存放的目录各不相同,这里经过读取注册表相关信息来避免此问题web
@echo off echo "获取TexturePackerGUI注册表安装信息..." & echo. setlocal enabledelayedexpansion for /f "skip=4 tokens=1,* delims=REG_SZ " %%a in ('reg query "HKEY_CLASSES_ROOT\Applications\TexturePackerGUI.exe\shell\Open\command" /ve') do ( set "str=%%b" echo !str! & echo. set "str=!str:"%%1"=!" echo TexturePackerGUI的安装路径:!str! & echo. for /f "tokens=1,* delims=" %%i in (!str!) do ( set "str=%%i" set "TexturePacker_Path=!str:TexturePackerGUI.exe=!TexturePacker.exe" echo !TexturePacker_Path! & echo. ) ) pause
在dos窗口下执行查询指令,获得结果以下图所示:算法
实际注册表的相关信息:shell
咱们会发现,返回的结果中,前4行是无用的信息。而后以“REG_SZ ”做为分隔符进行字符串分隔。获得包含空格的路径信息:"G:\Program Files\TexturePacker\bin\TexturePackerGUI.exe" "%1"express
经过set指令替换掉%1 工具
set "str=!str:"%%1"=!"
而后经过for /f "tokens=1,* delims=" %%i in (!str!) do () 来去除””及空格信息post
以后就直接调用了TexturePacker.exe性能
echo "TexturePacker安装路径:%TexturePacker_Path%" & echo. "%TexturePacker_Path%" batch_btn.tps "%TexturePacker_Path%" batch_kuang.tps "%TexturePacker_Path%" batch_left.tps "%TexturePacker_Path%" batch_spt.tps "%TexturePacker_Path%" batch_text.tps "%TexturePacker_Path%" batch_expression.tps
下面附几张Texture Packer 的经常使用设置截图,优化
一般状况下,咱们导出的纹理图片是RGBA8888格式,R、G、B、A各须要占用8个比特(1字节),因此一个像素总共须要4个字节表示。一般咱们使用RGBA444来保存图片,不过须要注意设置一个参数来保证压缩后的图片尺寸大小不会变化。勾选“Allow free sizes”,不然使用导出的图片后界面会错位(由于空白区域被裁剪掉了>_<)url
使用RGBA4444还须要注意的一个问题,就是选择压缩算法(抖动+通道)