Resprite 精灵表导出:PNG 网格排列、按片段拆分、多文件批量
精灵表是什么
精灵表(Sprite Sheet)是把动画的每一帧按网格排列在一张 PNG 里。游戏引擎(Unity、Godot、Cocos、Phaser)会读取这张 PNG 和对应的元数据 JSON,自动知道每一帧的位置和内容。
Resprite 导出精灵表的完整度在同类型软件里算是比较高的——支持多文件拆分、按动画片段分组、自定义命名。
导出入口
菜单 ▸ 导出 ▸ 精灵表 → 打开导出对话框。

核心参数
帧范围(Frame Range)
和 GIF 导出类似:全部帧、当前片段、或手动指定范围。
排列方向
两种:
- 水平排列:一帧一帧横向排(从左到右,换行后从上到下)。
- 垂直排列:一帧一帧纵向排。
大多数游戏引擎默认水平排列。
每行帧数量(Frame Count Per Row)
决定网格宽度。比如 16 帧动画设为每行 8 帧 → 2 行。设为 0(自动)时 Resprite 会自动算一个合理的网格尺寸(比如 16 帧 → 每行 4、共 4 行)。
边距(Margin / Padding)
| 参数 | 说明 |
|---|---|
| 外边距(Margin) | 整张精灵表周围的空白像素 |
| 帧间距(Padding) | 相邻帧之间的空白像素 |
这些参数主要是给游戏引擎做"安全边距"用的——有些引擎读取精灵表时会有像素级偏移,留 1~2 像素边距可以避免帧与帧之间出现"拖影"。
放大倍数(Scale)
保持像素比例等比放大。通常和画布原始尺寸一致(1×),游戏引擎会自己在运行时缩放精灵。
按片段拆分(v1.32.1+ / iOS R60)
为什么拆分
一个角色有 Idle、Walk、Run、Attack 四个动画片段,如果全部堆在一张精灵表里:
- 游戏引擎需要额外的逻辑来"从这张 PNG 里按帧号切出某个动画片段"。
- 一张大 PNG 里混了好几个动作,管理起来很混乱。
按 Clip 拆分后,Resprite 会自动生成:
Idle.png(Idle 片段的所有帧)Walk.png(Walk 片段的所有帧)Run.png(Run 片段的所有帧)Attack.png(Attack 片段的所有帧)
每个 PNG 旁边还会有对应的元数据 JSON,告诉游戏引擎帧数量、网格尺寸等信息。
拆分条件可以组合
Resprite 允许你组合这些拆分条件:
- 按 Clip(动画片段)拆分。
- 按 图层 拆分(不同图层导出为不同精灵表)。
- 两者同时。
命名规则(自定义)
导出时可以设置命名模板:
- 按 Clip 名命名 →
{clip_name}.png - 按图层名命名 →
{layer_name}.png - 前缀 + Clip 名 →
hero_{clip_name}.png
iOS 端可以把多个导出的精灵表打包为 ZIP 方便一次性分享;桌面端直接选择目标文件夹。

导出预览
导出对话框里会实时预览精灵表的最终排布(网格尺寸、总像素大小),导出前确认一下不会有意外。
精灵表导出与游戏引擎
Resprite 导出的精灵表格式兼容主流游戏引擎的读取标准:
- Unity:读取 PNG + 精灵编辑器里手动切帧。
- Godot:读取 PNG + Atlas 配置(或自动切帧)。
- Phaser:读取 PNG + JSON(Phaser 的默认格式)。
- Cocos Creator:读取 PNG + plist(或 JSON 帧数据)。
Resprite 还支持导出精灵表元数据 JSON,里面包含每一帧的像素偏移——某些引擎(如 Phaser)可以直接读取这个 JSON 来自动切帧,不需要手动配置。
桌面端:再次导出(Repeat Export)
DA v1.30.0+ 引入了"再次导出"功能:沿用上一次的导出目标位置和设置,直接重新执行。对需要连续比对多个导出版本(比如调整帧间距后重新出一版)的工作流特别方便。

一个实际工作流
假设你在 Resprite 里画了一个角色,有 Idle(4 帧)、Walk(8 帧)、Attack(6 帧)三个片段:
- 菜单 ▸ 导出 ▸ 精灵表。
- 帧范围 → 全部。
- 排列方向 → 水平。
- 每行帧 → 自动。
- 按 Clip 拆分 → 开启。
- 命名 →
hero_{clip_name}.png。 - 导出 → 得到 3 张 PNG + 3 份 JSON。
- 游戏引擎导入 → 自动识别帧序列。
功能可能随版本变化,精灵表按 Clip 拆分从 iOS R60 / DA v1.32.1 开始提供。