一款游戏会用到很多图片资源,通常我们会使用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

bat调用TexturePacker更新SpriteSheet的更多相关文章

  1. bat调用带参数存储过程

    @bat调用sql文件 sqlplus user/pass@orcl @F:\factory.sql @将所有的存储过程封装在sql中 factory.sql:exec pro_factory(&am ...

  2. bat调用exe文件并且传递参数

    bat调用exe文件并且传递参数 bat调用exe,并且传递日期参数,代码: @echo off cd "E:\SublimeWorks\exe" start xyzj_shrjj ...

  3. 远程调用cmd更新本地jar

    最近遇到一个项目需求需要实现远程更新,但是本地项目无法更新自己,这让博主很是头疼,既然自己无法更新自己的话,那就自建新的项目,通过本地项目来调用新项目接口来更新本地项目. 代码如下: /** * 重启 ...

  4. Window脚本学习笔记之BAT调用设置

    用一句bat脚本调用window的系统设置: rem 调用回收站 explorer.exe ::{645FF040-5081-101B-9F08-00AA002F954E} rem 检查Windows ...

  5. bat调用bat的一个巨坑

    [一个巨坑] a.bat的内容:echo 1b.batecho 2执行结果:运行a.bat时,输出1,然后调用b.bat, 但是 echo 2 显示不出来. bat怎么调用bat文件并返回? 例如主文 ...

  6. Windows上通过bat调用jmx进行循环运行

    1.jmx测试脚本中有两个线程组: 1)第一个线程组:模拟60台客户机并发像服务器发送上报请求,需要调用线程组的循环运行 2)第二个线程组:60台客户机上线后,模拟管理平台对客户机进行基础操作,如:创 ...

  7. bat调用kettle的job文件

    @bat set /p param=请输入时间:echo %param%F:cd D:/data-integrationecho 正在执行接口call Kitchen.bat/norep /file ...

  8. jQuery最新CDN调用地址 更新(201902)

    收集最新的jQuery地址,直接调用. 关于如何选择什么版本: https://www.cnblogs.com/osfipin/p/6211468.html 下面是收集的最新版本: 官方//code. ...

  9. BAT调用7z压缩程序

    @echo offset zip=C:\Program Files\7-Zip\7z.exeset timestamp=%date:~6,4%-%date:~0,2%-%date:~3,2%set d ...

随机推荐

  1. hdu 1698 线段树(成段替换 区间求和)

    一条钩子由许多小钩子组成 更新一段小钩子 变成铜银金 价值分别变成1 2 3 输出最后的总价值 Sample Input11021 5 25 9 3 Sample OutputCase 1: The ...

  2. mysql 主键与外键

    一.主键详解,引用自:https://blog.csdn.net/haiross/article/details/50456154 1.要设置主键自增的话字段必须是整形数字. 二.外键详解:引用自ht ...

  3. 001.hadoop及hbase部署

    一 环境准备 1.1 相关环境 系统:CentOS 7 #CentOS 6.x系列也可参考,转换相关命令即可. hadoop包:hadoop-2.7.0.tar.gz #下载官方地址:http://w ...

  4. 003.NFS配置实例

    一 NFS常见服务管理 1.1 启动NFS [root@imxhy ~]# systemctl start nfs #CentOS7.x系列启动 [root@imxhy ~]# service nfs ...

  5. 【Vue实战之路】一、Vue-cli入门及Vue工程目录全解。

    全面的Vue-cli学习,这一篇就够了! 一.下载 使用vue-cli前,需先安装node.js,node的安装就不赘述,不过在此需要注意: 1. node版本需在4.x以上,首推6.x以上版本(no ...

  6. 必读,sql加索引调优案例和explain extended说明

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 昨天分享了Mysql中的 explain 命令,使用 explain 来分析 select 语句的运行效果,如 :expl ...

  7. 【python学习-2】python起步必备

    1.python缩进 python 缩进是tab,还是空格呢?都可以,可以是一个tab,也可以是4个空格,但是最重要的是整个python脚本的缩进必须统一,否则会报错. 2.代码注释 python注释 ...

  8. spring 状态机

    前言:“状态机”见名知意,用状态去管理业务操作,打个比方:0~1岁(出生状态),1~3岁(认知状态),3~6岁(启蒙状态),6~22岁(学习状态),22~60(工作状态),60以后(退休状态),那么人 ...

  9. 使用 Python 在 Linux 上实现一键回归测试

    从代码库迁出代码 —- pexpect 的使用 测试人员从代码库(例如 CVS )迁出代码的过程中,需要手动输入访问密码,而 Python 提供了 Pexpect 模块则能够将手动输入密码这一过程自动 ...

  10. android 手机不能断点

    一个安卓平板 型号 联想 .. ,用andriod studio 打断点 调试, 应用 就卡死2秒,然后就挂掉了.  不知如何解决.