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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

Angular2 -- 生命周期钩子

指令和组件的实例有一个生命周期:新建、更新和销毁。 每个接口都有唯一的一个钩子方法,它们的名字是由接口名加上 ng前缀构成的。比如,OnInit接口的钩子方法...

11320
来自专栏青玉伏案

iOS开发之AutoLayout中的Content Hugging Priority和 Content Compression Resistance Priority解析

本篇博客的内容也不算太复杂,算是AutoLayout的一些高级的用法。本篇博客我们主要通过一些示例来看一下AutoLayout中的Content Hugging...

240100
来自专栏Small Code

【Python】解决使用 plt.savefig 保存图片时一片空白

更新 这里我会列出对本文的更新。 2017 年 9 月 28 日:修正几处错字,优化排版。 问题 当使用如下代码保存使用 plt.savefig 保存生成的图片...

89390
来自专栏二次元

各种语言按钮事件特征码

比如:弹提示框,就下MessageBoxA,注册表的,就下RegOpenKeyA等等

13200
来自专栏性能与架构

JS引发页面重排重绘的代价

示例 目标是修改div内容,3种实现方式,看下每种方式的执行时间 <html> <body> <div id="myDiv1"></div> <div id="...

37360
来自专栏冷冷

AngularJS 中使用Swiper制作滚动图不能滑动

Swiper是目前较为流行的移动端触摸滑动插件,因为其简单好用易上手,受到很多前端开发者的欢迎。 ---- 今天在使用Swiper的时候遇到这个问题: 使用an...

33450
来自专栏乐沙弥的世界

使用PL/SQL Developer剖析PL/SQL代码

    PL/SQL代码性能瓶颈可以通过DBMS_PROFILER包在命令行的方式下进行剖析来直接获得。对于比较复杂的代码而言,使用图形化的界面来进行剖析无疑是...

11010
来自专栏React Native开发圈

React Native面试知识点

本文会不定期不断更新,想查看最新版本请移步至https://github.com/forrest23/react-native-interview

31810
来自专栏GIS讲堂

OpenLayers3基础教程——加载资源

你可以在OL官网去下载,下载地址为http://openlayers.org/download/,也可以去我的百度云盘下载,下载地址为http://pan.ba...

50330
来自专栏移动应用测试

当uiautomator遇到xpath和ocr,畅快

Android 的 UI 测试中,经常要点击某个控件,google 给出了 uiautomator 工具可以方便的查看控件信息,但是写测试用例的时候,仍然经常遇...

22040

扫码关注云+社区

领取腾讯云代金券