赞
踩
需求:我有一个文件夹,里面有好多好多图片,我想软件自己读出来
1.写出你希望读取的文件夹的地址
2.读取这个文件夹里所有的文件名称
3.把这个文件夹里名称中和图片有关的文件名找出来
4.用代码在unity里创建一个图片
5.用加载的图片替换掉创建的这个图片,并调整大小
- void Start()
- {
- string[] fileName ; //建一个string存所有的名字
-
- //获取应用里"streamingAssetsPath/0"文件夹下得文件名称
- fileName = Directory.GetFiles((Application.streamingAssetsPath + "/0"));
-
- //如果获取到了,把和图片有关的挑出来
- if (fileName.Length != 0)
- {
- for (int i = 0; i < fileName.Length; i++)
- {
- //获取文件的后缀,把是图片的挑出来并加载出来
- string tmp = Path.GetExtension(fileName[i]);
- if (tmp == ".jpg" || tmp == ".png" || tmp == ".gif" || tmp == ".bmp")
- {
- StartCoroutine(ReadPictureName(fileName[i])); //加载的方法,在下文
- }
- }
- }
- }
- //加载图片
- public Image image;//在外面创建的图片拖进来
-
- IEnumerator ReadPictureName(string url) {
- //“在url这个地址下有个图片,请下载下来”这件事写成一个要求
- UnityWebRequest request = UnityWebRequestTexture.GetTexture(url);
-
- yield return request.SendWebRequest(); //把上面这个要求发出去,并等待结果
-
- //如果下载已经完成
- if (request.isDone) {
- if (request.isNetworkError || request.isHttpError) //如果网络错误,或者地址错误
- {
- Debug.Log(request.error); //输出这个错误
- }
- else //如果没错
- {
- //建一个2D图片,把request里的图片下载下来放进去
- Texture2D texture2d = DownloadHandlerTexture.GetContent(request);
-
- //建一个sprite格式的图片,把下载下来的图片转换格式,放进去;
- 括号里分别是(转换的对象,转换出来的图片的坐标,和宽高,
- 设置物体自身的坐标原点位置,00就是左下角,0.5,0.5就是中间,1,1就是右上角)
- Sprite sprite = Sprite.Create(texture2d, new Rect(0, 0, texture2d.width, texture2d.height), new Vector2(0.5f, 0.5f));
-
- //把Image里的图片替换掉
- image.sprite = sprite;
- }
- }
- }
我有一个文件夹,文件夹里有很多文件夹,我希望把每一个文件夹里的图片都读出来
重点语法:获取地址下所有文件夹的地址
string[] p = Directory.GetDirectories(path);
在之前的基础上增加逻辑:
1.获取文件夹内所有的地址
2.如果这些地址的后缀是图片格式
3.读取这些图片
- using System.IO;
- using UnityEngine;
- using UnityEngine.Networking;
-
- public class Tool_ReadPics : MonoBehaviour
- {
- string path;
-
- public List<Sprite> sprites;
-
- void Start()
- {
- path = Application.streamingAssetsPath + "/photos";
-
- StartCoroutine(ReadFolders(path));
-
- }
-
- IEnumerator ReadFolders(string path) {
- //获取path下的所有地址
- string[] allPath = Directory.GetFiles(path);
-
- //判断这些地址是否是图片格式
- foreach (string singlePath in allPath)
- {
- if(Path.GetExtension(singlePath)==".jpg"
- || Path.GetExtension(singlePath) == ".png")
- {
- yield return StartCoroutine(GetImageFromIO(singlePath));
- }
- }
-
- //获取地址下所有文件夹的地址
- string[] p = Directory.GetDirectories(path);
-
- if (p.Length == 0)
- {
-
- }
- else
- {
- foreach (string p0 in p)
- {
- yield return StartCoroutine(ReadFolders(p0));
- }
- }
- }
-
- //读取图片
- IEnumerator GetImageFromIO(string path) {
-
- UnityWebRequest request = UnityWebRequestTexture.GetTexture(path);
-
- yield return request.SendWebRequest();
-
- if (request.isDone)
- {
- if (request.isNetworkError || request.isHttpError)
- {
- Debug.Log(request.error);
- }
- else
- {
- Texture2D texture2d = DownloadHandlerTexture.GetContent(request);
-
- Sprite sprite = Sprite.Create(texture2d, new Rect(0, 0, texture2d.width, texture2d.height), new Vector2(0.5f, 0.5f));
- sprites.Add(sprite);
- }
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。