Plist 批量打包解包工具
CocosBuilder 插件,用于批量处理 plist 图集的打包和解包操作,支持交互式选择。
功能概述
| 脚本 | 功能 | 位置 |
|---|---|---|
| plistBatchUnpack.py | 批量解包 plist 图集 | WorldTourCasinoResource/PlugIns/ |
| plistBatchPack.py | 批量打包文件夹为 plist | WorldTourCasinoResource/PlugIns/ |
plistBatchUnpack.py - 批量解包
功能说明
将 plist 图集文件解包成独立的 PNG 图片文件。
特点:
- 只扫描当前文件夹(不包括子文件夹)
- 交互式选择要解包的文件
- 显示是否有配套的 PNG 文件
- 支持批量处理或单个处理
使用方法
- 在 CocosBuilder 中,右键包含 plist 文件的文件夹
- 选择 "Plist批量解包"
- 查看文件列表,每个文件会显示:
[有PNG]- 存在配套的 PNG 文件,可以解包[无PNG]- 缺少 PNG 文件,无法解包
- 根据提示输入序号:
- 输入
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 数量
- 支持两种模式:保留或删除原文件夹
使用方法
- 在 CocosBuilder 中,右键包含子文件夹的文件夹
- 选择 "Plist批量打包",然后选择子菜单:
- "打包并删除文件夹" - 打包成功后删除原文件夹
- "打包并保留文件夹" - 打包后保留原文件夹
- 查看可打包的文件夹列表(显示 PNG 数量)
- 根据提示输入序号:
- 输入
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 未安装或未安装在标准位置
解决:
- 下载并安装 TexturePacker
- 确保安装在
/Applications/TexturePacker.app - 重新运行脚本
Q2: 解包时提示"PNG文件不存在"
原因: plist 文件缺少配套的 PNG 图片
解决:
- 确保
.plist和.png文件在同一目录 - 文件名必须一致(除扩展名外)
Q3: 打包失败"图片资源过大"
原因: 图片总面积超过 2048x2048
解决:
- 减少文件夹中的图片数量
- 将图片分成多个图集
- 压缩图片尺寸
Q4: 文件夹不在可打包列表中
原因: 文件夹不符合打包条件
检查:
- 是否包含非 PNG 文件
- 是否有子文件夹
- 文件名是否有空格
注意事项
解包注意事项
- 备份原文件: 解包前建议备份原始 plist 和 PNG 文件
- 磁盘空间: 确保有足够的磁盘空间存储解包后的图片
- 文件命名: 解包后的图片文件名来自 plist 中的定义
打包注意事项
- 删除模式: 使用"打包并删除文件夹"时,确认数据已备份
- 文件名规范: PNG 文件名不能包含空格
- 图片格式: 只支持 PNG 格式,不支持 JPG 等其他格式
- 透明通道: 建议使用 RGBA 格式的 PNG(支持透明)
性能建议
- 单图集大小: 建议单个图集不超过 1024x1024(移动设备兼容性更好)
- 文件数量: 单次批量操作建议不超过 20 个文件/文件夹
- 图片优化: 打包前可先使用图片压缩工具优化 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/