Skip to content

Plist 批量打包解包工具

CocosBuilder 插件,用于批量处理 plist 图集的打包和解包操作,支持交互式选择。


功能概述

脚本功能位置
plistBatchUnpack.py批量解包 plist 图集WorldTourCasinoResource/PlugIns/
plistBatchPack.py批量打包文件夹为 plistWorldTourCasinoResource/PlugIns/

plistBatchUnpack.py - 批量解包

功能说明

将 plist 图集文件解包成独立的 PNG 图片文件。

特点

  • 只扫描当前文件夹(不包括子文件夹)
  • 交互式选择要解包的文件
  • 显示是否有配套的 PNG 文件
  • 支持批量处理或单个处理

使用方法

  1. 在 CocosBuilder 中,右键包含 plist 文件的文件夹
  2. 选择 "Plist批量解包"
  3. 查看文件列表,每个文件会显示:
    • [有PNG] - 存在配套的 PNG 文件,可以解包
    • [无PNG] - 缺少 PNG 文件,无法解包
  4. 根据提示输入序号:
    • 输入 0 - 解包所有文件
    • 输入 1,3,5 - 解包第 1、3、5 个文件
    • 输入 q - 取消操作

操作示例

bash
============================================================
找到 5 plist 文件:
============================================================
  [有PNG]  1. icon_set.plist
  [有PNG]  2. buttons.plist
  [无PNG]  3. symbols.plist
  [有PNG]  4. background.plist
  [有PNG]  5. effects.plist

请输入要解包的序号(用英文逗号隔开):
  - 输入 0: 解包所有
  - 输入 1,3,5: 解包第1、3、5个
  - 输入 q: 取消操作

请输入: 1,2,4

解包结果

  • 每个 plist 会生成一个同名文件夹
  • 文件夹内包含所有解包后的 PNG 图片
  • 图片会还原原始尺寸(包括被裁剪的透明边框)
  • 自动处理旋转的图片

依赖要求

  • Python 2.7
  • PIL (Pillow) - 首次运行会自动安装

plistBatchPack.py - 批量打包

功能说明

将包含 PNG 文件的文件夹打包成 plist 图集。

特点

  • 只扫描一级子文件夹(不递归深入)
  • 交互式选择要打包的文件夹
  • 显示每个文件夹的 PNG 数量
  • 支持两种模式:保留或删除原文件夹

使用方法

  1. 在 CocosBuilder 中,右键包含子文件夹的文件夹
  2. 选择 "Plist批量打包",然后选择子菜单:
    • "打包并删除文件夹" - 打包成功后删除原文件夹
    • "打包并保留文件夹" - 打包后保留原文件夹
  3. 查看可打包的文件夹列表(显示 PNG 数量)
  4. 根据提示输入序号:
    • 输入 0 - 打包所有文件夹
    • 输入 1,3,5 - 打包第 1、3、5 个文件夹
    • 输入 q - 取消操作

操作示例

bash
============================================================
找到 4 个可打包的文件夹:
============================================================
   1. icon_set (15个PNG)
   2. button_normal (8个PNG)
   3. effects (23个PNG)
   4. symbols (12个PNG)

请输入要打包的序号(用英文逗号隔开):
  - 输入 0: 打包所有
  - 输入 1,3,5: 打包第1、3、5个
  - 输入 q: 取消操作

请输入: 1,3

打包规则

文件夹必须满足以下条件才会被识别为可打包:

条件说明
✅ 只包含 PNG 文件不能有其他类型的文件
❌ 不能有子文件夹必须是扁平结构
❌ 文件名不能有空格空格会导致打包失败

打包参数

脚本使用 TexturePacker 进行打包,参数配置:

bash
--algorithm MaxRects          # 算法:最大矩形
--maxrects-heuristics best    # 启发式:最佳
--enable-rotation             # 允许旋转(节省空间)
--trim                        # 裁剪透明边框
--shape-padding 2             # 图片间距 2px
--border-padding 2            # 边框间距 2px
--max-size 2048               # 最大尺寸 2048x2048
--size-constraints AnySize    # 尺寸约束:任意

自动尺寸选择

脚本会自动测试并选择最小的合适尺寸:

256 512 1024 2048

如果 2048x2048 也装不下,会提示错误并跳过该文件夹。

依赖要求

  • Python 2.7
  • TexturePacker - 必须安装在 /Applications/TexturePacker.app

常见问题

Q1: 提示"没有找到 TexturePacker"

原因: TexturePacker 未安装或未安装在标准位置

解决:

  1. 下载并安装 TexturePacker
  2. 确保安装在 /Applications/TexturePacker.app
  3. 重新运行脚本

Q2: 解包时提示"PNG文件不存在"

原因: plist 文件缺少配套的 PNG 图片

解决:

  • 确保 .plist.png 文件在同一目录
  • 文件名必须一致(除扩展名外)

Q3: 打包失败"图片资源过大"

原因: 图片总面积超过 2048x2048

解决:

  • 减少文件夹中的图片数量
  • 将图片分成多个图集
  • 压缩图片尺寸

Q4: 文件夹不在可打包列表中

原因: 文件夹不符合打包条件

检查:

  • 是否包含非 PNG 文件
  • 是否有子文件夹
  • 文件名是否有空格

注意事项

解包注意事项

  1. 备份原文件: 解包前建议备份原始 plist 和 PNG 文件
  2. 磁盘空间: 确保有足够的磁盘空间存储解包后的图片
  3. 文件命名: 解包后的图片文件名来自 plist 中的定义

打包注意事项

  1. 删除模式: 使用"打包并删除文件夹"时,确认数据已备份
  2. 文件名规范: PNG 文件名不能包含空格
  3. 图片格式: 只支持 PNG 格式,不支持 JPG 等其他格式
  4. 透明通道: 建议使用 RGBA 格式的 PNG(支持透明)

性能建议

  1. 单图集大小: 建议单个图集不超过 1024x1024(移动设备兼容性更好)
  2. 文件数量: 单次批量操作建议不超过 20 个文件/文件夹
  3. 图片优化: 打包前可先使用图片压缩工具优化 PNG 文件

技术细节

解包流程

1. 解析 plist XML 文件

2. 读取帧信息(位置、尺寸、旋转)

3. 从大图裁剪对应区域

4. 处理旋转(如果需要)

5. 还原原始尺寸(加回透明边框)

6. 保存为独立 PNG 文件

打包流程

1. 检查文件夹是否符合条件

2. 测试最小可用尺寸(256/512/1024/2048)

3. 调用 TexturePacker 打包

4. 生成 .plist .png 文件

5. 删除原文件夹(如果选择删除模式)

plist 数据结构

xml
<plist>
  <dict>
    <key>frames</key>
    <dict>
      <key>image.png</key>
      <dict>
        <key>frame</key>
        <string>{x,y,width,height}</string>

        <key>sourceSize</key>
        <string>{width,height}</string>

        <key>sourceColorRect</key>
        <string>{x,y,width,height}</string>

        <key>rotated</key>
        <true/> or <false/>
      </dict>
    </dict>
  </dict>
</plist>

相关工具

工具功能位置
plistUnpack.py单文件解包PlugIns/
plistPack.py单文件打包(带裁剪)PlugIns/
plistPack_noTrim.py单文件打包(不裁剪)PlugIns/

更新日志

v1.0.0 (2025-01-29)

  • ✅ 新增批量解包功能
  • ✅ 新增批量打包功能
  • ✅ 支持交互式选择
  • ✅ 显示文件状态信息
  • ✅ 支持取消操作

最后更新: 2025-01-29 维护者: WorldTourCasino Team 脚本位置: WorldTourCasinoResource/PlugIns/

Released under the MIT License.