Unity输出 切割后的图片脚本

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" );
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值