转载的,牛人无处不在,我还太渺小

虽然目前网上具有切割合图功能的工具不少,但大部分都是自动切割或者根据plist之类的合图文件切割的,

这种切割往往不可自己微调或者很难维调,导致效果不理想。

今天逛贴吧发现了一位网友写的切割合图插件很不错,就分享下,

利用的是Unity自带的合图切割功能,原生的切割功能虽然很方便而且很容易微调,但无法导出,这个网友将它们导出了,

来自:百度Unity3D贴吧的13471713164

链接:http://tieba.baidu.com/p/3217039693

 1 using UnityEngine;
 2 using UnityEditor;
 3 using System.Collections.Generic;
 4 using System.IO;
 5
 6 /// <summary>
 7 /// 可以将Unity里自带的合图切割功能切割后的合图导出为子图
 8 /// 使用方法:
 9 /// 1.先导入Png合图
10 /// 2.图片Texture Type要选择Advanced并且下面那个Read/Wite Enable要打勾
11 /// 3.将图片格式设置为合图“mult”,并点击“Editor”开始切割合图
12 /// 4.切割完毕后先选中该张图片,点击Process to Sprites后便可以导出
13 /// </summary>
14 public static class SpriteSheetPackerImport
15 {
16     [MenuItem("Assets/Sprite Sheet Packer/Process to Sprites")]
17     static void ProcessToSprite()
18     {
19         Texture2D image = Selection.activeObject as Texture2D;                          //获取旋转的对象
20         string rootPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(image));     //获取路径名称
21         string path = rootPath + "/" + image.name + ".PNG";                             //图片路径名称
22
23
24         TextureImporter texImp = AssetImporter.GetAtPath(path) as TextureImporter;
25
26
27         AssetDatabase.CreateFolder(rootPath, image.name);                               //创建文件夹
28
29
30         foreach (SpriteMetaData metaData in texImp.spritesheet)                         //遍历小图集
31         {
32             Texture2D myimage = new Texture2D((int)metaData.rect.width, (int)metaData.rect.height);
33
34
35             //abc_0:(x:2.00, y:400.00, width:103.00, height:112.00)
36             for (int y = (int)metaData.rect.y; y < metaData.rect.y + metaData.rect.height; y++)//Y轴像素
37             {
38                 for (int x = (int)metaData.rect.x; x < metaData.rect.x + metaData.rect.width; x++)
39                     myimage.SetPixel(x - (int)metaData.rect.x, y - (int)metaData.rect.y, image.GetPixel(x, y));
40             }
41
42
43             //转换纹理到EncodeToPNG兼容格式
44             if (myimage.format != TextureFormat.ARGB32 && myimage.format != TextureFormat.RGB24)
45             {
46                 Texture2D newTexture = new Texture2D(myimage.width, myimage.height);
47                 newTexture.SetPixels(myimage.GetPixels(0), 0);
48                 myimage = newTexture;
49             }
50             var pngData = myimage.EncodeToPNG();
51
52
53             //AssetDatabase.CreateAsset(myimage, rootPath + "/" + image.name + "/" + metaData.name + ".PNG");
54             File.WriteAllBytes(rootPath + "/" + image.name + "/" + metaData.name + ".PNG", pngData);
55         }
56     }
57 }

本代码添加在 Asset/Editor 目录下 才会生效,

依据上述步骤,

在想要才分的图集的图片 右键  -> Sprite Sheet Packer -> Process to Sprite

之后就会在同目录下生成一个相同图集文件名的文件夹,里面就是才分出来的图集的每个资源了

转载于:https://www.cnblogs.com/dudu580231/p/7263720.html

利用Unity自带的合图切割功能将合图切割成子图相关推荐

  1. LINE分享android利用系统自带分享实现LINE分享功能

    android利用系统自带分享实现分享功能之LINE分享 最近公司向海外发展,提出了一个国外主流的社交APP分享需求.原来我使用的是第三方分享工具,但是太鸡肋,国内的APP支持的还是不错的,但是国外支 ...

  2. Windows与Linux利用系统自带实现共享文件夹的功能

    这里需要两台机器在同一局域网或者可互相ping通.系统以Windows11和Windows Subsystem for Linux(Ubuntu22.04.1)或国产Linux发行版的统信UOS(版本 ...

  3. tl494c封装区别_详解TL494的性能特点参数 TL494引脚图与功能

    TL494是一个固定频率的脉冲宽度调制电路,内置了线性锯齿波振荡器,振荡频率可以通过外部的一个电阻和一个电容进行调节.主要为开关电源控制器而设计. TL494器件集成了在单个芯片上构建脉冲宽度调制(P ...

  4. Unity 工具 之 图集根据切割为一张张单张图片的简单封装(Unity 自带 SpritePackage 打包图集的性能优化)

    Unity 工具 之 图集根据切割为一张张单张图片的简单封装(Unity 自带 SpritePackage 打包图集的性能优化) 目录 一.简单介绍 二.实现原理 三.注意事项 四.实现步骤 五.关键 ...

  5. java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题

    文章目录 先看成品 前言 一.项目目录结构 一.海报制作PosterUtil.java工具类 1. 描述 2. 代码 二.测试生成海报 1. 描述 2. 直接上代码 四.其他测试 1. Test1_C ...

  6. unity自带LightMapping和3Ds Max烘焙贴图的小对比

    本文转载自阿赵 <unity自带LightMapping和3Ds Max烘焙贴图的小对比> 对于做虚拟现实的朋友来说,烘焙贴图应该不是一个陌生的东西.想要在有限性能的电脑上面即时运算较好的 ...

  7. Unity网络多玩家游戏开发教程第1章Unity自带网络功能

    Unity网络多玩家游戏开发教程第1章Unity自带网络功能 Unity拥有大量的第三方插件,专门提供了对网络功能的支持.但是,大部分开发者第一次接触到的还是Unity自带的网络功能,也就是大家经常说 ...

  8. php带截切图片上传_PHP大文件切割上传并带进度条功能示例

    本文实例讲述了PHP大文件切割上传并带进度条功能.分享给大家供大家参考,具体如下: 前面一篇介绍了PHP大文件切割上传功能,这里再来进一步讲解PHP大文件切割上传并带进度条功能. 项目结构图: 14- ...

  9. 如何利用OpenCV自带的级联分类器训练程序训练分类器

    介绍 使用级联分类器工作包括两个阶段:训练和检测. 检测部分在OpenCVobjdetect 模块的文档中有介绍,在那个文档中给出了一些级联分类器的基本介绍.当前的指南描述了如何训练分类器:准备训练数 ...

最新文章

  1. centos7 rhel7 禁用ipv6
  2. keil4怎么移植其他人的程序_裸机程序如何驱动硬件?
  3. 已解决:Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshaketimeout
  4. Java 8系列之Lambda表达式
  5. Flutter创建圆圈图标按钮
  6. 深度优先遍历算法-01小偷偷东西问题
  7. skype for business server2015部署向导启动服务失败
  8. python购物记录程序_python ATM购物程序
  9. SD卡移植FAT32文件系统无MBR
  10. linux安装mysql.rpm软件包_Linux环境安装MySQL数据库(RPM格式的软件包)
  11. 自制AMD CS5536关机代码和嵌入式
  12. 《javascript高级程序设计》读书笔记——作用域
  13. 2.70-写出具有如下原型的函数的代码:
  14. zabbix开启网页报警声音方法:网页也可以有报警声音(46)
  15. 为什么需要框架(java)
  16. 记录下生活,让人生有点感悟
  17. 传奇背词 商业经济类第一篇 消费者该怎么做?
  18. 解决封号 Walmart最全申诉步骤
  19. python写一个飞花令程序
  20. 广东b级计算机考试试题,计算机等级考试级B考试试题真题试卷.doc

热门文章

  1. windows 10 anaconda python 3.7 安装keras-gpu tensorflow-gpu
  2. 学硕计算机306分调剂,考研学硕可调剂专硕 需符合两个条件
  3. redis如何实现分布式锁?
  4. 造句简单_零基础也能说一口流利英语,用简单的you are造句学英语
  5. c语言330转化成字符,c语言同步练习(330份).doc
  6. java代码套路,开发中比较容易理解的代码套路
  7. Jvm 系列(三):GC 算法 垃圾收集器
  8. Go Reflect
  9. python _、__和__xx__的区别
  10. Random:产生随机数的类