private string filespath = "";
private string folderpath = "";
filespath 表示图片要保存的位置 + 图片的名称及格式(.png);
folderpath 表示图片要保存的位置;
4、写一个方法来保存这个图片到写好的目录下:
void DoPicture()
if (!File.Exists(filespath))//首先判断一下该图片文件是否存在
if (!Directory.Exists(folderpath))//再判断一下该文件夹是否存在,若不存在先创建
Directory.CreateDirectory(folderpath);//创建目录
var bys = testpng.EncodeToPNG();//转换图片资源
File.WriteAllBytes(filespath, bys);//保存图片到写好的目录下
需要注意两点:
1、引入命名空间:using System.IO;
2、在AndroidManifest文件中加入权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
(注:该方法适用于手机等移动设备开发)
最近在制作一个钓鱼的游戏需要对钓到的不同种类的鱼进行统计,但是没有找到合适的2D图片素材,找了蛮久下载了一个3D模型素材包,只有模型和材质没有对应的贴图,当场裂开!尝试过使用快捷键截图来截取模型图片但是会被背景图片影响,只能使用PS来修改,数量太多太麻烦。不过查询到了大佬的文章,直接可以利用摄像机导出透明底的模型图片,转载记录学习一下吧!
Unity自带Recorder
之所以要讲Recorder,是因为Recorder的录像功能实际上就是把屏幕图像保存成了一帧帧的图片,而实现的功能,所以我们先看下它的源码。
public override void RecordFrame(RecordingSession session)
if (m_Inputs.Count != 1)
throw new Exception("Unsupported number of so
首先是我们从AssetStore下载的asset格式的素材,可以看到虽然unity能把这些素材解析成Texture,但是不同于普通贴图,这里我们不能修改贴图的各项属性。
普通图片
asset 格式的图片
既然要转化格式,自然是要读这个贴图的数据,但是我们发现,asset格式的资源没有Read/Write Enable的勾选框,不用急,我们可以修改该资源到Debug模式下看看
然后再...
Unity 读取一个文件夹中所有图片,并将每张图片的宽、高、大小、存放路径保存到Excel中
//功能:读取对应路径下的文件夹,获取文件夹(包括子文件夹)中的图片名称,大小,宽高,相对路径
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
using OfficeOpenXml;
public class ReadFilesS
1、截图代码//等待渲染线程结束//初始化Texture2D//读取屏幕像素信息并存储为纹理数据= null)= null)2、外调函数(需要转入Canvas和截图区域Image)3、调用//输出图片//存储Canvas和截图区域Image//截图输出Sprite});//截图输出Base64//});//截图输出Base64和Sprite//});4、结果(第一张图是19201080,第二张图是1536864)5、源码。
目标:实现数据存储为二进制文件,然后通过二进制文件解析数据。
目标分为三个阶段:1、将数据结构转化为二进制(至于数据是怎样读取进来的这个就不说了,因为方式比较多,但是读取进来一定都会以特定的数据结构形式来保存)。2、加载二进制文本。3、加载为对应的数据结构。
阶段一:将数据结构转化为二进制有两种方式:1:利用C#的BinaryWrite,2:使用函数把数据转化成byte数组,然后在写入
基于Unity3D的图集打包
Unity3D的UGUI图集打包采取自动打包的方式,旨在让开发者彻底模糊图集的概念,无须关注图集是如何打包的,从而让开发者将更多的精力放在逻辑开发上。
步骤如下,
1. 首先创建3个Image组件分别显示3张不同的图片,此时还没打包图集,可以看出Batches为3