专栏首页游戏杂谈bat调用TexturePacker更新SpriteSheet

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 条评论
登录 后参与评论

相关文章

  • JavaScript版的简单动画

    Google+中有一个特效:拖拽用户头像至分组内,用户头像会有一个特效(绕着圆圈转一圈)。写了个简单的示例,效果如下图所示:

    meteoric
  • 禁用iOS的UIView长按默认操作

    很多时候需要禁用移动设备的默认行为,比如长按一个a链接的按钮(href写的是javascript:;)会提示是否打开/取消。而-webkit-touch-cal...

    meteoric
  • as3加载外部资源

    在as3的开发中,经常会加载外部共用资源,比如某一个公用的图片或者其它小特效。这时候为了避免重复请求,一般会将这些资源放在一个fla文件中,为每一个资源添加链接...

    meteoric
  • bash/shell编程学习(2)

    注:linux中有一个经典名言【一切皆文件】,/dev/null可以认为是一个特殊的空文件,更形象点,可以理解为科幻片中的黑洞,任何信息重向定输出到它后,便有去...

    菩提树下的杨过
  • shell数组

    $ A=(a b c def) ================================================== $ echo ${A[@...

    一见
  • 前台JS(Jquery)调用后台方法 无刷新级联菜单示例

    前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例 CasMenu.aspx页面: <%@ Page Language="C#" AutoEventW...

    Porschev
  • Centos7 禁止ping的几种方式

    通过修改配置方式禁止ping后,内部ping也将失效,通过防火墙方式禁止ping后,可以ping自己内部网络。

    拓荒者
  • 源码系列:基于FPGA的数字电压表(AD)设计

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。...

    FPGA技术江湖
  • 根据后台返回的UIButton title动态改变UIButton宽度

    developerbfl
  • RHCE培训笔记-6(下)

    弥补原有的基本权限的不足:chown , chmod , chgrp 一个文件只有一个所有者和一个所属组

    Elapse

扫码关注云+社区

领取腾讯云代金券