unity3d 导出NGUI图集中的图片

1.导入图集 , 新建Resource 文件夹 ,将图集放到这个文件夹中
2.修改图集参数
TextrueType 为Sprite(2D and UI) 
SpriteMode 为 Multiple
FilterMode 为 Trilinear 
如下图:
unity3d 导出NGUI图集中的图片_第1张图片
点击apply 。
3.点击Sprite Editor  对图集中的图片进行编辑
由于导出的图片是256 * 256 ,需要对图片进行修改
然后选择Slice ,点击Slice 。如下图:
unity3d 导出NGUI图集中的图片_第2张图片
4.编写下面代码
using UnityEngine;
using UnityEditor;

public class TestSaveSprite
{
    [MenuItem("Tools/导出精灵")]
    static void SaveSprite()
    {
        string resourcesPath = "Assets/Resources/";
        foreach (Object obj in Selection.objects)
        {
            string selectionPath = AssetDatabase.GetAssetPath(obj);

            // 必须最上级是"Assets/Resources/"
            if (selectionPath.StartsWith(resourcesPath))
            {
                string selectionExt = System.IO.Path.GetExtension(selectionPath);
                if (selectionExt.Length == 0)
                {
                    continue;
                }

                // 从路径"Assets/Resources/UI/testUI.png"得到路径"UI/testUI"
                string loadPath = selectionPath.Remove(selectionPath.Length - selectionExt.Length);
                loadPath = loadPath.Substring(resourcesPath.Length);

                // 加载此文件下的所有资源
                Sprite[] sprites = Resources.LoadAll<Sprite>(loadPath);
                if (sprites.Length > 0)
                { 
                    // 创建导出文件夹
                    string outPath = Application.dataPath + "/outSprite/" + loadPath;
                    System.IO.Directory.CreateDirectory(outPath);

                    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();

                        // 写入成PNG文件
                        System.IO.File.WriteAllBytes(outPath + "/" + sprite.name + ".png", tex.EncodeToPNG());
                    }
                    Debug.Log("SaveSprite to " + outPath);
                }
            }
        }
        Debug.Log("SaveSprite Finished");
    }
}

5.修改图集属性
Texture Type 选择为 Advanced 
勾选Read/Write Enabled 
点击Applay 
unity3d 导出NGUI图集中的图片_第3张图片
6.选中这个图集,在菜单栏中点击Tools ,点击导出精灵。
unity3d 导出NGUI图集中的图片_第4张图片
7.切换到其他程序,然后切换回来。可以在project 视图中发现下图中的文件夹。
unity3d 导出NGUI图集中的图片_第5张图片

你可能感兴趣的:(unity3d,NGUI,图集)