# UnityExportSprite
**Repository Path**: foryun/UnityExportSprite
## Basic Information
- **Project Name**: UnityExportSprite
- **Description**: 将Unity图集切片的精灵导出来
- **Primary Language**: C#
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 27
- **Forks**: 10
- **Created**: 2020-02-16
- **Last Updated**: 2025-03-04
## Categories & Tags
**Categories**: game-dev
**Tags**: Csharp, Unity
## README
# UnityExportSprite
## 图集图片导出单图
### 介绍
- 将Unity图集切片的精灵导出来
### 使用指导
- 将图集图片(png、tga)放入Unity的“Assets/Resources”目录下,选中图集,在Inspector面板做如下操作:
1. 将Texture Type改成Sprite(2D and UI)
2. 将Sprite Mode改成Multiple
3. 将Read/Write Enabled
4. 将Format改成RGBA 32bit
5. 点击Apply
- 操作如下图

- 点击Sprite Editor,进入精灵编辑器,如下图:

- 进入精灵编辑器后,点击编辑器左上角的Slice,然后在弹出的下拉框中点击Slice,最后点击右上角的Apply,完成对图集切图。

- 完成对图集的切图后,创建C#脚本ExportSpriteEditor.cs文件并添加如下代码:
```c#
using UnityEngine;
using UnityEditor;
///
/// 导出精灵工具
///
public class ExportSpriteEditor
{
[MenuItem("Tools/导出精灵")]
static void ExportSprite()
{
string resourcesPath = "Assets/Resources/";
foreach (Object obj in Selection.objects)
{
string selectionPath = AssetDatabase.GetAssetPath(obj);
if (selectionPath.StartsWith(resourcesPath))
{
string selectionExt = System.IO.Path.GetExtension(selectionPath);
if (selectionExt.Length == 0)
{
Debug.LogError($"资源{selectionPath}的扩展名不对,请选择图片资源");
continue;
}
// 如果selectionPath = "Assets/Resources/UI/Common.png"
// 那么loadPath = "UI/Common"
string loadPath = selectionPath.Remove(selectionPath.Length - selectionExt.Length);
loadPath = loadPath.Substring(resourcesPath.Length);
// 加载此文件下的所有资源
Sprite[] sprites = Resources.LoadAll(loadPath);
if (sprites.Length > 0)
{
// 创建导出目录
string exportPath = Application.dataPath + "/ExportSprite/" + loadPath;
System.IO.Directory.CreateDirectory(exportPath);
foreach (Sprite sprite in sprites)
{
Texture2D tex = new Texture2D((int) sprite.rect.width, (int) sprite.rect.height,
sprite.texture.format, false);
tex.SetPixels(sprite.texture.GetPixels((int) sprite.rect.xMin, (int) sprite.rect.yMin,
(int) sprite.rect.width, (int) sprite.rect.height));
tex.Apply();
// 将图片数据写入文件
System.IO.File.WriteAllBytes(exportPath + "/" + sprite.name + ".png", tex.EncodeToPNG());
}
Debug.Log("导出精灵到" + exportPath);
}
Debug.Log("导出精灵完成");
// 刷新资源
AssetDatabase.Refresh();
}
else
{
Debug.LogError($"请将资源放在{resourcesPath}目录下");
}
}
}
}
```
- 代码创建完毕,选中图集图片文件,如下图:

- 点击Unity顶部的菜单栏,选中Tools,点击“导出精灵”,如下图:

- 在Assets/ExportSprite目录下就可以找到导出的切图文件了。如下图:

## NGUI图集导出单图
### 介绍
- 将NGUI的UIAtlas图集导出单图。
### 使用指导
- 将需要处理的NGUI图集文件导入目录NGUIAtlas(只要是Unity工程下的目录都可以)
- 点击Unity顶部的菜单栏,选中Tools,点击“NGUIAtlasToSprite - NGUI图集转单图”,如下图:
- 在NGUIAtlasToSprite弹框中,点击“检索所有NGUI Atlas”按钮,工具会自动检索Unity工程目录下所有的NGUI图集,如下图:
- 如果检索出来的图集中,有需要导出单图的图集,点击选中不需要导出单图的图集,再点击“-”按钮,如下图:
- 确认无误后,点击“导出单图”按钮,将会将NGUI图集的单图,导出到"Assets/ExportSprite",如下图:
