利用Unity自带的合图切割功能将合图切割成子图
转载的,牛人无处不在,我还太渺小
虽然目前网上具有切割合图功能的工具不少,但大部分都是自动切割或者根据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自带的合图切割功能将合图切割成子图相关推荐
- LINE分享android利用系统自带分享实现LINE分享功能
android利用系统自带分享实现分享功能之LINE分享 最近公司向海外发展,提出了一个国外主流的社交APP分享需求.原来我使用的是第三方分享工具,但是太鸡肋,国内的APP支持的还是不错的,但是国外支 ...
- Windows与Linux利用系统自带实现共享文件夹的功能
这里需要两台机器在同一局域网或者可互相ping通.系统以Windows11和Windows Subsystem for Linux(Ubuntu22.04.1)或国产Linux发行版的统信UOS(版本 ...
- tl494c封装区别_详解TL494的性能特点参数 TL494引脚图与功能
TL494是一个固定频率的脉冲宽度调制电路,内置了线性锯齿波振荡器,振荡频率可以通过外部的一个电阻和一个电容进行调节.主要为开关电源控制器而设计. TL494器件集成了在单个芯片上构建脉冲宽度调制(P ...
- Unity 工具 之 图集根据切割为一张张单张图片的简单封装(Unity 自带 SpritePackage 打包图集的性能优化)
Unity 工具 之 图集根据切割为一张张单张图片的简单封装(Unity 自带 SpritePackage 打包图集的性能优化) 目录 一.简单介绍 二.实现原理 三.注意事项 四.实现步骤 五.关键 ...
- java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
文章目录 先看成品 前言 一.项目目录结构 一.海报制作PosterUtil.java工具类 1. 描述 2. 代码 二.测试生成海报 1. 描述 2. 直接上代码 四.其他测试 1. Test1_C ...
- unity自带LightMapping和3Ds Max烘焙贴图的小对比
本文转载自阿赵 <unity自带LightMapping和3Ds Max烘焙贴图的小对比> 对于做虚拟现实的朋友来说,烘焙贴图应该不是一个陌生的东西.想要在有限性能的电脑上面即时运算较好的 ...
- Unity网络多玩家游戏开发教程第1章Unity自带网络功能
Unity网络多玩家游戏开发教程第1章Unity自带网络功能 Unity拥有大量的第三方插件,专门提供了对网络功能的支持.但是,大部分开发者第一次接触到的还是Unity自带的网络功能,也就是大家经常说 ...
- php带截切图片上传_PHP大文件切割上传并带进度条功能示例
本文实例讲述了PHP大文件切割上传并带进度条功能.分享给大家供大家参考,具体如下: 前面一篇介绍了PHP大文件切割上传功能,这里再来进一步讲解PHP大文件切割上传并带进度条功能. 项目结构图: 14- ...
- 如何利用OpenCV自带的级联分类器训练程序训练分类器
介绍 使用级联分类器工作包括两个阶段:训练和检测. 检测部分在OpenCVobjdetect 模块的文档中有介绍,在那个文档中给出了一些级联分类器的基本介绍.当前的指南描述了如何训练分类器:准备训练数 ...
最新文章
- centos7 rhel7 禁用ipv6
- keil4怎么移植其他人的程序_裸机程序如何驱动硬件?
- 已解决:Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshaketimeout
- Java 8系列之Lambda表达式
- Flutter创建圆圈图标按钮
- 深度优先遍历算法-01小偷偷东西问题
- skype for business server2015部署向导启动服务失败
- python购物记录程序_python ATM购物程序
- SD卡移植FAT32文件系统无MBR
- linux安装mysql.rpm软件包_Linux环境安装MySQL数据库(RPM格式的软件包)
- 自制AMD CS5536关机代码和嵌入式
- 《javascript高级程序设计》读书笔记——作用域
- 2.70-写出具有如下原型的函数的代码:
- zabbix开启网页报警声音方法:网页也可以有报警声音(46)
- 为什么需要框架(java)
- 记录下生活,让人生有点感悟
- 传奇背词 商业经济类第一篇 消费者该怎么做?
- 解决封号 Walmart最全申诉步骤
- python写一个飞花令程序
- 广东b级计算机考试试题,计算机等级考试级B考试试题真题试卷.doc
热门文章
- windows 10 anaconda python 3.7 安装keras-gpu tensorflow-gpu
- 学硕计算机306分调剂,考研学硕可调剂专硕 需符合两个条件
- redis如何实现分布式锁?
- 造句简单_零基础也能说一口流利英语,用简单的you are造句学英语
- c语言330转化成字符,c语言同步练习(330份).doc
- java代码套路,开发中比较容易理解的代码套路
- Jvm 系列(三):GC 算法 垃圾收集器
- Go Reflect
- python _、__和__xx__的区别
- Random:产生随机数的类