using System.IO;
using UnityEngine;
using UnityEditor;

public class TestSaveSprite
{
  [MenuItem("LLWH/SpriteSplit")]
  public static void SpriteSlice()
  {
    Texture2D image = Selection.activeObject as Texture2D; // 得到选中的图集 该图集事先已经被修改属性
    string rootPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(image)); //文件所在的路径
    string path = rootPath + "/" + image.name + ".PNG"; //Assets/Resources/UI/XXX.png
    TextureImporter texImp = AssetImporter.GetAtPath(path) as TextureImporter;
    AssetDatabase.CreateFolder(rootPath, image.name);

    // 遍历图集中每一张小图,并使用文件IO写入到同级目录的文件夹中

    foreach (SpriteMetaData metaData in texImp.spritesheet)
    {
      Texture2D myimage = new Texture2D((int)metaData.rect.width, (int)metaData.rect.height);

      for (int y = (int)metaData.rect.y; y < metaData.rect.y + metaData.rect.height; y++)
      {
        for (int x = (int)metaData.rect.x; x < metaData.rect.x + metaData.rect.width; x++)
        myimage.SetPixel(x - (int)metaData.rect.x, y - (int)metaData.rect.y, image.GetPixel(x, y));
      }
      if (myimage.format != TextureFormat.ARGB32 && myimage.format != TextureFormat.RGB24)
      {
        Texture2D newTexture = new Texture2D(myimage.width, myimage.height);
        newTexture.SetPixels(myimage.GetPixels(0), 0);
        myimage = newTexture;
      }
      var pngData = myimage.EncodeToPNG();
      File.WriteAllBytes(rootPath + "/" + image.name + "/" + metaData.name + ".PNG", pngData);
      AssetDatabase.Refresh();
    }
  }
}

Unity图集分割的更多相关文章

  1. Unity 图片分割将spirte保存在本地

    如果你拿到的是一张整图,你想分割之后使用NGUI sprite来使用!  下面就能解决的需求. 步骤: 1. 使用Unity自带的spirte进行分割图片 2. 使用代码把分割出来的2DSpirte转 ...

  2. Unity图集打包

    http://www.xuanyusong.com/archives/3304 http://www.xuanyusong.com/archives/3315 http://www.xuanyuson ...

  3. Laya自动图集原理

    关于Laya自动图集 Laya会把size小于512*512的图片打入自动大图集中.如果图片被打入自动图集中,图片的内存就交由Laya自动处理,开发者不能手动删除. Laya最多生成6张2048*20 ...

  4. PosePlus的第一次突破

    动作问题一定要解决 PosePlus是解决这个问题的库 (之前叫做CleanData.Ani,后来我想过,之前的设计各个库之间的依赖太重了) 现在把他们之间的依赖剥开.   PosePlus解决几个问 ...

  5. Unity中2D和UGUI图集的理解与使用

    图集 什么是图集? 在使用3D技术开发2D游戏或制作UI时(即使用GPU绘制),都会使用到图集,而使用CPU渲染的2D游戏和UI则不存在图集这个概念(比如Flash的原生显示列表),那么什么是图集呢? ...

  6. Unity NGUI 网络斗地主 -制作图集 Atlas

    Unity NGUI 网络斗地主 -制作图集 Atlas by @杨海龙 开发环境   Win7+Unity4.2.1f4+NGUI 3.0.4版本 这一节告诉大家如何制作(图集)Atlas! 1.首 ...

  7. Unity 利用UGUI打包图集,动态加载sprite资源

    今天做了一个UI界面,这个界面是好友界面,该界面上有若干个好友item. 需要对每个tem的头像对象(image)动态显示对应的头像.尝试利用UGUI的图集来加载,具体实现如下: 1.首先,需要知道S ...

  8. BMFont中文字体图集制作的方法~(for unity ngui)

    BMFont中文字体图集制作的方法~(for unity ngui) 好吧~似乎这个问题困扰了很多人,游戏开始中文化是个不错的事儿啊,这里我就做下说明,如何制作中文字体图集~ 这里的字库图集的制作更多 ...

  9. [Unity UGUI图集系统]浅谈UGUI图集使用

    **写在前面,下面是自己做Demo的时候一些记录吧,参考了很多网上分享的资源 一.打图集 1.准备好素材(建议最好是根据图集名称按文件夹分开) 2.创建一个SpriteAtlas 3.将素材添加到图集 ...

随机推荐

  1. SQLAlchemy小知识点

    1.创建数据库模型的时候增加添加上注释SQLAlchemy1.2新增了comment参数telephone = db.Column(db.String(11), nullable=False, com ...

  2. YII实现dropDownList 联动事件

    因功能需求,需要用到联动,特此记录分享 一.视图中 <div class="main-form"> <?php $form = ActiveForm::begin ...

  3. CodeForcesGym 100641D Generalized Roman Numerals

    Generalized Roman Numerals Time Limit: 5000ms Memory Limit: 262144KB This problem will be judged on  ...

  4. git-osc自己定义控件之:CircleImageView

    git-osc自己定义控件之:CircleImageView 一.CircleImageView的使用 在项目中能够发现,用户的头像都是圆形的.感觉非常好奇,昨天最终发现了,原来是自定了一个Image ...

  5. 路由器一键桥接Android实现

    開始之前,首先说一下什么叫一键桥接,所谓一键桥接,就是点击一下.就能够对所连接的路由器进行网络中继设置.以实现路由器能够通过已有的无线路由器进行网络訪问. 那么实现这个功能有几种方法呢?能够说有非常多 ...

  6. pandas深入理解

    Pandas是一个Python库,旨在通过“标记”和“关系”数据以完成数据整理工作,库中有两个主要的数据结构Series和DataFrame In [1]: import numpy as np In ...

  7. C#实现调用接口数据获取数据格式化XML、json转成Table的方法

    废话不多说,直接上代码: json 格式化转DataTable: result为从接口得到的数据,格式化json的方法主要来自Newtonsoft.Json JObject joUnit = JObj ...

  8. Ubuntu14.04编译WebRTC For Android代码 2014-07-24

    整整快一年没有写博客了.近期基于Google开源的WebRTC项目做了一款音视频聊天的即时通信项目,期间在下载WebRTC代码时就碰到了一些问题.在此以作记录,也希望可以帮助到正在下载编译WebRTC ...

  9. UVA 10859 - Placing Lampposts 树形DP、取双优值

                              Placing Lampposts As a part of the mission ‘Beautification of Dhaka City’, ...

  10. Sort和UnSort的小技巧

    Sort和UnSort的小技巧: 记录sortidx,对sortidx再从小到大排序就可以得到用于还原的unsortidx. 对于序列A: sort_idx = np.argsort(A) un_so ...