Unity3D如何加载外部图片并当做Sprite使用 您所在的位置:网站首页 img/sprite/ThinkStationWork.png Unity3D如何加载外部图片并当做Sprite使用

Unity3D如何加载外部图片并当做Sprite使用

2023-08-10 06:02| 来源: 网络整理| 查看: 265

    前段时间做东西,需要可以在文件夹下面更改图片,达到运行后图片更改的效果,并且需要将读取到的图片转换成Sprite精灵使用.因为我要用到图片的填充效果.经过网上的学习,这里总结一下实现的方法和思路.以及实现代码

1.首先第一步需要做的时知道如何读取到外部的图片文件.这里使用FileStream文件流类.

这里首先写一个处理文件流的方法:

private static byte[] getImageByte(string imagePath) { //读取到文件 FileStream files = new FileStream(imagePath, FileMode.Open); //新建比特流对象 byte[] imgByte = new byte[files.Length]; //将文件写入对应比特流对象 files.Read(imgByte, 0, imgByte.Length); //关闭文件 files.Close(); //返回比特流的值 return imgByte; }

每一个步骤的内容都在代码中标注了.通过上面的方法,最终,我们能得到对应文件路径下的文件的比特流.

    但是现在面临了一个问题,读取文件,是要清楚地知道文件路径的,但是如果我不知道文件名呢,需要的结果是不管这个文件夹下面有多少图片,名称怎么样我都得读取得到才行,这里通过Directory类中的方法 Directory.GetFiles("路劲名称")可以获取到一个文件夹下所有文件的名称,方法如下

private List GetImagePath() { List filePaths = new List(); string imgtype = "*.JPG|*.PNG"; string[] ImageType = imgtype.Split('|'); for (int i = 0; i < ImageType.Length; i++) { //获取unity根目录下的图片文件夹下的所有文件的路径 路径+ 名称全部存储在字符串数组中 string[] dirs = Directory.GetFiles(Application.dataPath + @"/图片", ImageType[i]); // for (int j = 0; j < dirs.Length; j++) { filePaths.Add(dirs[j]); Debug.Log("图片路径为 " + dirs[j]); } Debug.Log("一共读取到" + dirs.Length + "张图片"); } return filePaths; }

最后整合一下一个方法,不仅获取到Texture文件,同时也将Texture格式转换成Sprite文件

List loadTexture = new List(); List loadsprite = new List();   private void LoadTexture2Sprite()     {         //清空一下,防止爆满         loadTexture.Clear();         loadsprite.Clear();         //获取到路劲         List filePaths = new List();         filePaths =  GetImagePath();         //新建时要给上大小,小于原先的图片大小会出现图片值截取一块的情况                 //根据读取到的文件路径,一个文件一个文件的将图片存储进去         for (int i = 0; i < filePaths.Count; i++)         {             Texture2D t2d = new Texture2D(1920, 1080);             //根据路劲读取字节流再转换成图片形式             t2d.LoadImage(getImageByte(filePaths[i]));             //放到集合里面             loadTexture.Add(t2d);             //将Texture创建成Sprite 参数分别为图片源文件,Rect值给出起始点和大小 以及锚点的位置             Sprite sprite = Sprite.Create(t2d, new Rect(0, 0, t2d.width, t2d.height), Vector2.zero);             //放入集合             loadsprite.Add(sprite);         }     }             

通过写上一些辅助方法,图片改一改填充,换换图片的功能,最后得到的结果如下:

到这里,如何加载图片以及转换成Sprite调用就写完了,大家是否学会了呢



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有