bat調用TexturePacker更新SpriteSheet


一款游戲會用到很多圖片資源,通常我們會使用TexturePacker工具進行圖片的拼接、壓縮,為了考慮性能問題,單個SpriteSheet的尺寸不會設置的太大(最大1024 * 1024),這樣就可能會有多個SpriteSheet。每當有圖片資源需要更新時,操作起來會有點不方便。所以希望能通過bat來批量重新生成新的SpriteSheet

 

首先我們需要獲取TexturePacker的安裝目錄,一般我們都會安裝TexturePackerGUI工具,它實際運行起來還是調用TexturePacker.exe工具。因為軟件環境因人而異可能存放的目錄各不相同,這里通過讀取注冊表相關信息來避免此問題

@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窗口下執行查詢指令,得到結果如下圖所示:

實際注冊表的相關信息:

 

 

我們會發現,返回的結果中,前4行是無用的信息。然后以“REG_SZ ”作為分隔符進行字符串分隔。得到包含空格的路徑信息:"G:\Program Files\TexturePacker\bin\TexturePackerGUI.exe" "%1"

通過set指令替換掉%1   

set "str=!str:"%%1"=!"

然后通過for /f "tokens=1,* delims=" %%i in (!str!) do () 來去除””及空格信息

 

之后就直接調用了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”,否則使用導出的圖片后界面會錯位(因為空白區域被裁剪掉了>_<)

使用RGBA4444還需要注意的一個問題,就是選擇壓縮算法(抖動+通道)

 

texturepacker官網上有相應的對比圖>>

 

 

 

參考資料:

在Command Line中使用TexturePacker

使用TexturePacker批量生成SpriteSheet

bat批處理 教程

(譯)在cocos2d里面如何使用Texture Packer和像素格式來優化spritesheet


免責聲明!

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



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