bat调用TexturePacker更新SpriteSheet

简介: 一款游戏会用到很多图片资源,通常我们会使用TexturePacker工具进行图片的拼接、压缩,为了考虑性能问题,单个SpriteSheet的尺寸不会设置的太大(最大1024 * 1024),这样就可能会有多个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

目录
相关文章
|
2月前
|
API
Harmony状态管理@Local和@Param
Harmony状态管理@Local和@Param
55 0
|
3月前
|
安全 Windows
下次启动自动删除文件程序 Auto_Del 说明与下载(V0.0.0006 Beta1)
下次启动自动删除文件程序 Auto_Del 说明与下载(V0.0.0006 Beta1)
|
7月前
|
Shell Android开发 开发者
Android系统 自定义动态修改init.custom.rc
Android系统 自定义动态修改init.custom.rc
387 0
|
7月前
Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load
Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load
UE DT Load Texture 运行时加载纹理图片 插件说明
UE DT Load Texture 运行时加载纹理图片 插件说明
175 0
|
测试技术
loadrunner 运行脚本-Run-time Settings之Pacing设置
loadrunner 运行脚本-Run-time Settings之Pacing设置
198 0
关于 海思平台sample的demo中添加ffmpeg静态库(.a)报错误undefined reference toavpriv_pix_fmt_hps_avi等错误 的解决方法
关于 海思平台sample的demo中添加ffmpeg静态库(.a)报错误undefined reference toavpriv_pix_fmt_hps_avi等错误 的解决方法
关于 海思平台sample的demo中添加ffmpeg静态库(.a)报错误undefined reference toavpriv_pix_fmt_hps_avi等错误 的解决方法
Qt .pro文件之defineReplace函数的用法,实现lib文件名自动添加后缀“d“
Qt .pro文件之defineReplace函数的用法,实现lib文件名自动添加后缀“d“
613 0
|
IDE 开发工具 C++
Python命令行解析:IDE内点击Run运行代码直接得出结果、基于TF flags(或argparse、sys.argv)在Dos内命令行(一条命令)调用代码文件得出结果
Python命令行解析:IDE内点击Run运行代码直接得出结果、基于TF flags(或argparse、sys.argv)在Dos内命令行(一条命令)调用代码文件得出结果
|
PHP
YII2 配置gii之后页面404 解决 2点=1 要加载model,2 要设置环境为dev,如下截图 3次要---有时候可能需要 执行composer dump-autoload 重新加载类
YII2 配置gii之后页面404  解决 2点=1 要加载model,2 要设置环境为dev,如下截图 解决成功     我的是这么解决的
1175 0