【Unity3D】动态加载图片(批量)

您所在的位置:网站首页 unity加载外部图片图片黑屏 【Unity3D】动态加载图片(批量)

【Unity3D】动态加载图片(批量)

2024-07-15 13:38| 来源: 网络整理| 查看: 265

本文参考这篇文章。

加载整个StreamingAssets文件夹中某个文件下的所有图片,我加载的是StreamingAssets文件夹中Pictures下的所有图片。

加载的图片存在allTex2d中,若要将其转换成sprite格式并显示,可以用images[i].sprite = TextureToSprite(allTex2d[i]);(其中images是需要贴上sprite的Image)

// 储存获取到的图片 List allTex2d = new List(); //public Image[] images; /// /// 读取StremingAssets文件夹指定的文件夹目录下的所有图片进行加载 /// /// StremingAssets文件夹下的文件夹名字 void Load(string path) { List filePaths = new List(); string[] dirs = null; string imgtype = "*.BMP|*.JPG|*.GIF|*.PNG"; string[] ImageType = imgtype.Split('|'); for (int i = 0; i < ImageType.Length; i++) { //获取Application.dataPath文件夹下所有的图片路径 dirs = Directory.GetFiles((Application.streamingAssetsPath + "/" + path), ImageType[i]); for (int j = 0; j < dirs.Length; j++) { filePaths.Add(dirs[j]); } } Debug.Log("图片数量:" + dirs.Length); for (int i = 0; i < filePaths.Count; i++) { Texture2D tx = new Texture2D(187, 287); tx.LoadImage(GetImageByte(filePaths[i])); ///获取图片名字,并去除.png 后缀 tx.name = filePaths[i].Substring(filePaths[i].LastIndexOf(@"\") + 1, filePaths[i].LastIndexOf('.') - filePaths[i].LastIndexOf('\\') - 1); allTex2d.Add(tx); Debug.Log("Texture2D Name:" + tx.name + ".png"); } // for(int i = 0; i < allTex2d.Count; i++) //{ // images[i].sprite = TextureToSprite(allTex2d[i]); // } } /// /// 根据图片路径返回图片的字节流byte[] /// /// 图片路径 /// 返回的字节流 public 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; } /// /// 将Texture2d转换为Sprite /// /// 参数是texture2d纹理 /// private Sprite TextureToSprite(Texture2D tex) { Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f)); return sprite; }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3