bat調用TexturePacker更新SpriteSheet

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

 

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

在Command Line中使用TexturePacker

使用TexturePacker批量生成SpriteSheet

bat批處理 教程

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

相關文章
相關標籤/搜索