一款遊戲會用到不少圖片資源,一般咱們會使用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還須要注意的一個問題,就是選擇壓縮算法(抖動+通道)