# UnityExportSprite **Repository Path**: sclod/UnityExportSprite ## Basic Information - **Project Name**: UnityExportSprite - **Description**: 将Unity图集切片的精灵导出来 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 11 - **Created**: 2021-01-23 - **Last Updated**: 2021-01-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## 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 操作如下图 ![t1](MDPic/t1.jpg) 点击Sprite Editor,进入精灵编辑器,如下图: ![t2](MDPic/t2.jpg) 进入精灵编辑器后,点击编辑器左上角的Slice,然后在弹出的下拉框中点击Slice,最后点击右上角的Apply,完成对图集切图。 ![t3](MDPic/t3.png) 完成对图集的切图后,创建C#脚本ExportSpriteEditor.cs文件并添加如下代码: 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; } // 设置图片属性 // string path = AssetDatabase.GetAssetPath(obj); // TextureImporter ti = (TextureImporter) TextureImporter.GetAtPath(path); // ti.textureType = TextureImporterType.Sprite; // ti.spriteImportMode = SpriteImportMode.Multiple; // // 旧版Unity方法 //// ti.textureFormat = TextureImporterFormat.RGBA32; // ti.textureCompression = TextureImporterCompression.Uncompressed; // ti.isReadable = true; // AssetDatabase.ImportAsset(path); // 如果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}目录下"); } } } } 代码创建完毕,选中图集图片文件,如下图: ![t4](MDPic/t4.png) 点击Unity顶部的菜单栏,选中Tools,点击“导出精灵”,如下图: ![t5](MDPic/t5.png) 在Assets/ExportSprite目录下就可以找到导出的切图文件了。如下图: ![t6](MDPic/t6.png)