当前位置:   article > 正文

【Unity3D】动态加载图片(批量)_unity 获取文件夹下的所有图片

unity 获取文件夹下的所有图片

本文参考这篇文章

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

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

  1. // 储存获取到的图片
  2. List<Texture2D> allTex2d = new List<Texture2D>();
  3. //public Image[] images;
  4. /// <summary>
  5. /// 读取StremingAssets文件夹指定的文件夹目录下的所有图片进行加载
  6. /// </summary>
  7. /// <param name="path"> StremingAssets文件夹下的文件夹名字 </param>
  8. void Load(string path)
  9. {
  10. List<string> filePaths = new List<string>();
  11. string[] dirs = null;
  12. string imgtype = "*.BMP|*.JPG|*.GIF|*.PNG";
  13. string[] ImageType = imgtype.Split('|');
  14. for (int i = 0; i < ImageType.Length; i++)
  15. {
  16. //获取Application.dataPath文件夹下所有的图片路径
  17. dirs = Directory.GetFiles((Application.streamingAssetsPath + "/" + path), ImageType[i]);
  18. for (int j = 0; j < dirs.Length; j++)
  19. {
  20. filePaths.Add(dirs[j]);
  21. }
  22. }
  23. Debug.Log("图片数量:" + dirs.Length);
  24. for (int i = 0; i < filePaths.Count; i++)
  25. {
  26. Texture2D tx = new Texture2D(187, 287);
  27. tx.LoadImage(GetImageByte(filePaths[i]));
  28. ///获取图片名字,并去除.png 后缀
  29. tx.name = filePaths[i].Substring(filePaths[i].LastIndexOf(@"\") + 1, filePaths[i].LastIndexOf('.') - filePaths[i].LastIndexOf('\\') - 1);
  30. allTex2d.Add(tx);
  31. Debug.Log("Texture2D Name:" + tx.name + ".png");
  32. }
  33. // for(int i = 0; i < allTex2d.Count; i++)
  34. //{
  35. // images[i].sprite = TextureToSprite(allTex2d[i]);
  36. // }
  37. }
  38. /// <summary>
  39. /// 根据图片路径返回图片的字节流byte[]
  40. /// </summary>
  41. /// <param name="imagePath">图片路径</param>
  42. /// <returns>返回的字节流</returns>
  43. public static byte[] GetImageByte(string imagePath)
  44. {
  45. FileStream files = new FileStream(imagePath, FileMode.Open);
  46. byte[] imgByte = new byte[files.Length];
  47. files.Read(imgByte, 0, imgByte.Length);
  48. files.Close();
  49. return imgByte;
  50. }
  51. /// <summary>
  52. /// 将Texture2d转换为Sprite
  53. /// </summary>
  54. /// <param name="tex">参数是texture2d纹理</param>
  55. /// <returns></returns>
  56. private Sprite TextureToSprite(Texture2D tex)
  57. {
  58. Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
  59. return sprite;
  60. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/103566
推荐阅读
相关标签
  

闽ICP备14008679号