当前位置:   article > 正文

Unity读取项目文件夹图片,PC端_unity 获取配置文件中的图片

unity 获取配置文件中的图片

1.创建场景,添加UI——Canvas,Canvas下添加Scroll View。

如下图

2.在Scroll View下的Content下添加脚本Open,添加Grid Layout Group。

3.Open的脚本如下,本地图片的路径如下

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System.IO;
  5. using UnityEngine.UI;
  6. public class Open : MonoBehaviour
  7. {
  8. private GameObject canvas;
  9. private Button _btn;
  10. private GameObject button;
  11. private List<Texture2D> images = new List<Texture2D>();
  12. void Start()
  13. {
  14. Debug.Log("开始");
  15. canvas = GameObject.Find("Canvas/Scroll View/Viewport/Content");
  16. load();
  17. Debug.Log("开始");
  18. for (int i = 0; i < images.Count; i++)
  19. {
  20. button = new GameObject("Button" + i, typeof(Button), typeof(RectTransform), typeof(Image)); //创建一个GameObject 加入Button组件
  21. button.transform.SetParent(this.canvas.transform); //把Canvas设置成Button的父物体
  22. _btn = button.GetComponent<Button>(); //获得Button的Button组件
  23. //先创建一个Texture2D对象,用于把流数据转成Texture2D
  24. Sprite sprite = Sprite.Create(images[i], new Rect(0, 0, images[i].width, images[i].height), Vector2.zero);
  25. button.GetComponent<Image>().sprite = sprite;
  26. }
  27. }
  28. /// <summary>
  29. /// 加载文件夹内图片
  30. /// </summary>
  31. void load()
  32. {
  33. List<string> filePaths = new List<string>();
  34. string imgtype = "*.BMP|*.JPG|*.GIF|*.PNG";
  35. string[] ImageType = imgtype.Split('|');
  36. for (int i = 0; i < ImageType.Length; i++)
  37. {
  38. //获取Application.dataPath文件夹下所有的图片路径
  39. string[] dirs = Directory.GetFiles((Application.dataPath + "/Image/"), ImageType[i]);
  40. for (int j = 0; j < dirs.Length; j++)
  41. {
  42. filePaths.Add(dirs[j]);
  43. Debug.Log(dirs[j]);
  44. }
  45. }
  46. for (int i = 0; i < filePaths.Count; i++)
  47. {
  48. Texture2D tx = new Texture2D(100, 100);
  49. tx.LoadImage(getImageByte(filePaths[i]));
  50. images.Add(tx);
  51. }
  52. }
  53. /// <summary>
  54. /// 根据图片路径返回图片的字节流byte[]
  55. /// </summary>
  56. /// <param name="imagePath">图片路径</param>
  57. /// <returns>返回的字节流</returns>
  58. private static byte[] getImageByte(string imagePath)
  59. {
  60. FileStream files = new FileStream(imagePath, FileMode.Open);
  61. byte[] imgByte = new byte[files.Length];
  62. files.Read(imgByte, 0, imgByte.Length);
  63. files.Close();
  64. return imgByte;
  65. }
  66. }

4.运行结果如下。

方法二

1.Canvas上添加Button和RawImage控件。

 

2.新建一个空的GameObject,其上添加脚本。脚本如下:

  1. using System;
  2. using System.IO;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class LoadImageByString : MonoBehaviour
  6. {
  7. public RawImage showImage;
  8. public Button loadImage;
  9. private string imgPath;
  10. private string imageStr;
  11. private void Awake()
  12. {
  13. Debug.Log("醒了");
  14. imgPath = Application.dataPath + "/Image/girl.jpg";
  15. Debug.Log(imgPath);
  16. imageStr = SetImageToString(imgPath);
  17. }
  18. void Start()
  19. {
  20. Debug.Log("开始");
  21. loadImage.onClick.AddListener(() =>
  22. {
  23. showImage.texture = GetTextureByString(imageStr);
  24. });
  25. }
  26. /// <summary>
  27. /// 将图片转化为字符串
  28. /// </summary>
  29. private string SetImageToString(string imgPath)
  30. {
  31. Debug.Log("将图片转化为字符串");
  32. FileStream fs = new FileStream(imgPath, FileMode.Open);
  33. byte[] imgByte = new byte[fs.Length];
  34. fs.Read(imgByte, 0, imgByte.Length);
  35. fs.Close();
  36. return Convert.ToBase64String(imgByte);
  37. }
  38. /// <summary>
  39. /// 将字符串转换为纹理
  40. /// </summary>
  41. private Texture2D GetTextureByString(string textureStr)
  42. {
  43. Debug.Log("将字符串转换为纹理");
  44. Texture2D tex = new Texture2D(10, 10);
  45. byte[] arr = Convert.FromBase64String(textureStr);
  46. tex.LoadImage(arr);
  47. tex.Apply();
  48. return tex;
  49. }
  50. public void onclick()
  51. {
  52. Debug.Log("按下了");
  53. }
  54. }

3.运行,点击按钮,读取一张图片显示。

问题:打包成为apk,安卓手机端运行读取不到图片,asset的资源没有被打包到apk,问题应该在Application.dataPath。尝试其他的也没有成功,需要再查一下。

 

参考(24条消息) Unity读取图片并显示到UI中_FutureDr的博客-CSDN博客

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

闽ICP备14008679号