本文实例为大家分享了Unity切割图集转换为多张图片的具体代码,供大家参考,具体内容如下
这是网上看来的一个工具,用于Unity中将图集切割为多张的格式后将这些sprite改为一张张图片,就是切割速度太慢,图集中的图片较多的时候还会丢失一部分图片,有时间本人会进一步改善再修改这篇博客。
1.首先选中要切割的图集,texture type 选为default,并勾选Advanced下的read/Write Enabled。
2.texture type改为sprite(2D and UI),Sprite mode 选为Multiple,apply一下。
3.点击Sprite Editor切割图片。
4.选中图集右键然后选择imageslicer选择process to Sprites。
5.等待切割完成。
脚本如下:
using UnityEngine; using System.Collections; using UnityEditor; using System.IO; using System.Collections.Generic; /// <summary> /// 切割 /// </summary> public static class ImageSlicer { [MenuItem("Assets/ImageSlicer/Process to Sprites")] static void ProcessToSprite() { Texture2D image = Selection.activeObject as Texture2D;//获取旋转的对象 string rootPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(image));//获取路径名称 string path = rootPath + "/" + image.name + ".PNG";//图片路径名称 TextureImporter texImp = AssetImporter.GetAtPath(path) as TextureImporter;//获取图片入口 AssetDatabase.CreateFolder(rootPath, image.name);//创建文件夹 foreach (SpriteMetaData metaData in texImp.spritesheet)//遍历小图集 { Texture2D myimage = new Texture2D((int)metaData.rect.width, (int)metaData.rect.height); //abc_0:(x:2.00, y:400.00, width:103.00, height:112.00) for (int y = (int)metaData.rect.y; y < metaData.rect.y + metaData.rect.height; y++)//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)); } //转换纹理到EncodeToPNG兼容格式 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(); //AssetDatabase.CreateAsset(myimage, rootPath + "/" + image.name + "/" + metaData.name + ".PNG"); File.WriteAllBytes(rootPath + "/" + image.name + "/" + metaData.name + ".PNG", pngData); // 刷新资源窗口界面 AssetDatabase.Refresh(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
问题内容: 我已经尝试“剪切”图像一段时间了,我将解释原因和尝试之处。所以我想创建一个hp“ bar”,除了它不是一个bar,而是一个心,所以我要做的只是将两张图片相互画在上面,然后只剪一张就可以了。好像在hp中丢失了一样,但是我无法找到削减图像的方法。 设置高度只会调整图像的大小,您可能已经猜到了 我尝试使用textureRegion对其进行破解,但效果不佳 我发现了一种称为clip begin
上、下、左、右四个方向滑动显示底部视图。 作者说:这个应用在主要是通过一个第三方框架(ViewDeck),实现侧边栏滑动切换视图,顶部和底部滑动切换视图。 [Code4App.com]
本文向大家介绍vue iview多张图片大图预览、缩放翻转,包括了vue iview多张图片大图预览、缩放翻转的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了vue iview多张图片大图预览,可缩放翻转,供大家参考,具体内容如下 先看效果: 完整项目代码地址 具体代码如下: 可以看到,这个图片大图预览是用js创建的,而且是在main元素下添加的元素。因为这个是在ivew-admin
有没有更好的方法来转换贴图
如何将此地图/平面图转换为便于理解的图形,请解释其工作原理,谢谢。
问题内容: 用户选择后,我想在 base64中 获取图像(提交表单之前) 就像是 : 我了解了文件API和其他内容,我想要一个简单的跨浏览器解决方案(显然不包括IE6 / IE7) 任何帮助表示感谢。 问题答案: function readFile() { ( PS: 一个base64编码的图像(字符串)为原始图像数据大小的4/3)
问题内容: 我正在尝试从相机预览中捕获图像并在其上进行一些绘制。问题是,我只有大约3-4 fps的绘图,并且一半的帧处理时间是从摄像机预览接收和解码NV21图像并将其转换为 位图 。我有一个执行此任务的代码,是在另一个堆栈问题上找到的。它似乎并不快,但我不知道如何优化它。在Samsung Note 3(图像尺寸1920x1080)上大约需要100-150毫秒。我怎样才能使其更快地工作? 代码: 图
本文向大家介绍Unity使用EzySlice实现模型多边形顺序切割,包括了Unity使用EzySlice实现模型多边形顺序切割的使用技巧和注意事项,需要的朋友参考一下 Unity使用EzySlice实现模型切割,供大家参考,具体内容如下 老规矩,直接上代码: 注意:脚本搭载和需要的材质球以及切割数组填充 EzySlice 多边形顺序切割 补充一点:当前切割数组可扩展,可以使用 LineRender