TexturePacker Unity json图集拆解

拿大佬的plist代码过来改了一下,向大佬致敬

使用python27,python需要安装Pillow,直接使用pip安装即可

#!python
import re
import json
import os, sys
from PIL import Image

in_path = 'F:/Ball Blast/Assets/TexturePacker/atlases'
out_path = 'F:/Ball Blast/Assets/TexturePacker/project'

def endWith(s, *endstring):
    array = map(s.endswith, endstring)
    if True in array:
        return True
    else:
        return False
def get_recursive_file_list(path):
    current_files = os.listdir(path)
    all_files = []
    for file_name in current_files:
        full_file_name = os.path.join(path, file_name)
        if endWith(full_file_name, '.txt'):
            full_file_name = full_file_name.replace('.txt', '')
            all_files.append(full_file_name)

        if os.path.isdir(full_file_name):
            next_level_files = get_recursive_file_list(full_file_name)
            all_files.extend(next_level_files)

    return all_files


def to_list(src_dict):
    ret = []
    if src_dict.has_key('x'):
        ret.append(src_dict['x'])
    if src_dict.has_key('y'):
        ret.append(src_dict['y'])
    if src_dict.has_key('w'):
        ret.append(src_dict['w'])
    if src_dict.has_key('h'):
        ret.append(src_dict['h'])
    return ret

def gen_png_from_json(json_filename, png_filename):
    file_path = json_filename.replace('.txt', '')
    big_image = Image.open(png_filename)
    json_dict = json.loads(open(json_filename, 'r').read())
    for k, v in json_dict['frames'].items():
        rectlist = to_list(v['frame'])
        width = int(rectlist[3] if v['rotated'] else rectlist[2])
        height = int(rectlist[2] if v['rotated'] else rectlist[3])
        box = (
            int(rectlist[0]),
            int(rectlist[1]),
            int(rectlist[0]) + width,
            int(rectlist[1]) + height,
        )
        sizelist = [int(x) for x in to_list(v['sourceSize'])]
        rect_on_big = big_image.crop(box)

        if v['rotated']:
            rect_on_big = rect_on_big.rotate(90)

        result_image = Image.new('RGBA', sizelist, (0, 0, 0, 0))
        if v['rotated']:
            result_box = (
                (sizelist[0] - height) / 2,
                (sizelist[1] - width) / 2,
                (sizelist[0] + height) / 2,
                (sizelist[1] + width) / 2
            )
        else:
            result_box = (
                (sizelist[0] - width) / 2,
                (sizelist[1] - height) / 2,
                (sizelist[0] + width) / 2,
                (sizelist[1] + height) / 2
            )
        result_image.paste(rect_on_big, result_box, mask=0)
        outfile = os.path.join(file_path.replace(in_path, out_path), k)
        outdir = os.path.dirname(outfile)
        if not os.path.isdir(outdir):
            os.makedirs(outdir)
        result_image.save(outfile)
        print 'generate --->' + outfile

if __name__ == '__main__':
    currtenPath = in_path #os.getcwd()
    allJsonArray = get_recursive_file_list(currtenPath)

    for filename in allJsonArray:
        print filename
        json_filename = filename + '.txt'
        png_filename = filename + '_png.png'
        if (os.path.exists(json_filename) and os.path.exists(png_filename)):
            gen_png_from_json(json_filename, png_filename)
        else:
            print "make sure you have boith json and png files in the same directory"
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: TexturePacker是一个常用的纹理打包工具,可用于将多个小图标或纹理合并到一个大的纹理图集中,并生成相应的元数据和配置。UnityPackage是Unity游戏引擎的一种打包文件格式,可以包含游戏资源、脚本、场景等。 当我们使用TexturePacker创建纹理图集后,可以将生成的文件保存为UnityPackage格式,以便在Unity中轻松导入和使用。这个导入器UnityPackage是一种用于将TexturePacker文件导入到Unity项目中的工具。 使用TexturePacker导出的UnityPackage文件可以包含纹理图集的图片文件以及与之相关的配置、元数据等。导入UnityPackage时,Unity会自动解析并展示出这些资源,方便我们在游戏中使用。 通过导入器UnityPackage,我们可以一键导入TexturePacker生成的图集资源到Unity项目中,省去了手动添加、配置的繁琐过程。导入后,我们可以在Unity编辑器中直接引用这些纹理图集,用于设置游戏的界面、角色、地图等。同时,由于TexturePacker图集制作工具通常会自动优化纹理,减小纹理的内存占用和渲染性能消耗,因此使用TexturePacker导入的图集也能为我们的游戏性能提供一定的优化。 总而言之,texturepacker importer unitypackage是一个用于将TexturePacker生成的纹理图集资源导入到Unity项目中的工具,可以方便地使用TexturePacker提供的纹理打包功能,并优化游戏性能。 ### 回答2: TexturePacker Importer UnityPackage是一种Unity引擎中的插件,用于导入纹理图集(Texture Atlas)制作工具TexturePacker生成的文件。TexturePacker是一款广泛使用的纹理图集制作工具,它可以将多个小纹理合并成一个大纹理,并且在文件中记录了每个小纹理的位置和大小等信息。 通过使用TexturePacker Importer UnityPackage,我们可以将TexturePacker生成的文件轻松导入到Unity项目中。一旦导入成功,我们就可以在Unity中使用TexturePacker生成的纹理图集。 使用TexturePacker Importer UnityPackage有以下几个优点: 1. 减少内存占用:通过将多个小纹理合并成一个大纹理图集,可以减少游戏加载时所需的内存占用,提高游戏的性能。 2. 提高渲染效率:在游戏中使用纹理图集可以减少渲染调用次数,提高游戏的渲染效率。 3. 管理方便:通过导入TexturePacker生成的文件,我们可以在Unity中直接使用纹理图集,并且可以很方便地管理和更新纹理。 使用TexturePacker Importer UnityPackage的步骤如下: 1. 下载和安装TexturePacker Importer UnityPackage插件。 2. 将TexturePacker生成的文件拖放到Unity项目的Assets文件夹中。 3. 在Unity项目中选择导入的文件,并设置导入的属性。 4. 导入成功后,我们可以在Unity的资源管理器中看到导入的纹理图集文件,可以在游戏中使用它。 总之,TexturePacker Importer UnityPackage是一个非常有用的插件,可以方便地导入和使用TexturePacker生成的纹理图集,提高游戏的性能和渲染效率。 ### 回答3: TexturePacker是一款功能强大的纹理打包软件,它可以将多张纹理打包成一张大的纹理集,以减少游戏中的纹理数量,优化游戏性能。Importer UnityPackage是Unity游戏引擎中的一种导入方式,可以将其他软件创建的资源文件以Unity可识别的格式导入到Unity项目中。 TexturePacker Importer UnityPackage就是将TexturePacker打包好的纹理集以UnityPackage的方式导入到Unity项目中使用。这样做的好处是可以方便地管理纹理资源,减少项目中的文件数量,并且可以提高游戏的运行效率。 使用TexturePacker Importer UnityPackage的方法很简单。首先,将TexturePacker导出的纹理集文件保存为UnityPackage格式。然后,在Unity编辑器中选择“Assets”菜单下的“Import Package”选项,从弹出的对话框中选择导入的UnityPackage文件,点击“Import”按钮进行导入。 导入完成后,可以在Unity项目中看到导入的纹理集资源。可以将这个纹理集应用到游戏对象的材质上,也可以在脚本中通过代码使用纹理集中的纹理。在使用纹理集的过程中,可以根据需求进行调整纹理的显示方式,例如裁剪、平铺、重复等。 TexturePacker Importer UnityPackage的使用可以大大简化游戏开发过程中的纹理处理工作,减少纹理资源的浪费和加载开销,提高游戏的性能和画面质量。因此,在开发Unity游戏时,推荐使用TexturePacker Importer UnityPackage来管理和使用纹理资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

achonor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值