当前位置: 首页 > news >正文

【UnityEditor】Unity将Multiple Sprite分割成多张png小图

如题,代码如下

using UnityEngine;
using UnityEditor;
using System.IO;public class SplitTexture
{[MenuItem("ExtraTools/SplitTexture")]static void DoSplitTexture(){// 获取所选图片Texture2D selectedImg = Selection.activeObject as Texture2D;string rootPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(selectedImg));string path = rootPath + "/" + selectedImg.name + ".png";TextureImporter texImp = AssetImporter.GetAtPath(path) as TextureImporter;// 设置为可读texImp.isReadable = true;AssetDatabase.ImportAsset(path);// 创建文件夹AssetDatabase.CreateFolder(rootPath, selectedImg.name);foreach (SpriteMetaData metaData in texImp.spritesheet){var width = (int)metaData.rect.width;var height = (int)metaData.rect.height;Texture2D smallImg = new Texture2D(width, height);var pixelStartX = (int)metaData.rect.x;var pixelEndX = pixelStartX + width;var pixelStartY = (int)metaData.rect.y;var pixelEndY = pixelStartY + height;for (int x = pixelStartX; x <= pixelEndX; ++x){for (int y = pixelStartY; y <= pixelEndY; ++y){smallImg.SetPixel(x - pixelStartX, y - pixelStartY, selectedImg.GetPixel(x, y));}}//  转换纹理到EncodeToPNG兼容格式if (TextureFormat.ARGB32 != smallImg.format  && TextureFormat.RGB24 != smallImg.format){Texture2D img = new Texture2D(smallImg.width, smallImg.height);img.SetPixels(smallImg.GetPixels(0), 0);smallImg = img;}// 保存小图文件string smallImgPath = rootPath + "/" + selectedImg.name + "/" + metaData.name + ".png";File.WriteAllBytes(smallImgPath, smallImg.EncodeToPNG());// 刷新资源窗口界面AssetDatabase.Refresh();// 设置小图的格式TextureImporter smallTextureImp = AssetImporter.GetAtPath(smallImgPath) as TextureImporter;// 设置为可读smallTextureImp.isReadable = true;// 设置alpha通道smallTextureImp.alphaIsTransparency = true;// 不开启mipmapsmallTextureImp.mipmapEnabled = false;AssetDatabase.ImportAsset(smallImgPath);}}
}
http://www.lryc.cn/news/15183.html

相关文章:

  • 独立搭建 handle server
  • 记一次KindEditor表格修改无效问题
  • 一种图片展示的完美方案,图片展示,object-fill
  • 社科院杜兰金融管理硕士——考研初试成绩已出,关于分数“6线”你有了解吗
  • Talk | 清华大学交叉信息研究院助理教授杜韬:利用计算方法探究流固耦合
  • 2023年,智能家居实体门店如何选品?
  • 数据分析-深度学习 NLP Day2关键词提取案例
  • LeetCode题解:938. 二叉搜索树的范围和,BFS,JavaScript,详细注释
  • istio初步了解
  • 【模板】用HTML编写邮件正文 | 各大邮箱几乎都会过滤css样式、js脚本等效果,如何用基础HTML编写?
  • 华为云计算之双活容灾
  • ASEMI高压MOS管ASE20N65SE体积,ASE20N65SE大小
  • resp连接redis服务器
  • 七天实现一个分布式缓存
  • 电子招标采购系统源码功能清单
  • mysql数据库基础知识
  • CAN总线通信
  • MATLAB/Simulink 通信原理及仿真学习(二)
  • CentOS7 防火墙(firewall)的操作命令
  • 文献工具汇总:论文查找、文献管理、文献翻译
  • SQL零基础入门学习(三)
  • 苹果手机如何快速的直接从相册里面的图片提取文字?
  • 【go】函数调用
  • Linux系统之Uboot、Kernel、Busybox思考之四
  • 为什么要经常阅读和分析计算机SCI期刊论文? - 易智编译EaseEditing
  • Shiro框架详解
  • redhawk:GSC file与STA file
  • 【Python学习笔记】46.Python3 math 模块和requests 模块
  • 页面导航-yang
  • Mac配置homebrew