赞
踩
Unity加载本地图片有不少方法,一般使用以下这些:
1、使用System.IO下的File.ReadAllBytes方法:
- //方法一
- void LoadTextureFromFile1(string filePath)
- {
- // 创建一个Texture2D
- Texture2D texture = new Texture2D(1, 1);
-
- // 加载图片数据
- byte[] imageData = File.ReadAllBytes(filePath);
-
- // 将图片数据加载到Texture2D对象中
- texture.LoadImage(imageData);
-
- // 创建一个新的材质
- Material material = new Material(Shader.Find("Standard"));
-
- // 将加载的纹理应用到材质上
- material.mainTexture = texture;
-
- // 将材质应用到游戏对象上
- render1.material = material;
-
- }
2、 使用System.IO下的数据流FileStream加载
- //方法二
- void LoadTextureFromFile2(string filePath)
- {
- //创建数据流并加载图片
- FileStream files = new FileStream(filePath, FileMode.Open);
-
- byte[] imgByte = new byte[files.Length];
- files.Read(imgByte, 0, imgByte.Length);
- files.Close();
-
- Texture2D texture = new Texture2D(1, 1);
- texture.LoadImage(imgByte);
-
- Material material = new Material(Shader.Find("Standard"));
- material.mainTexture = texture;
- render2.material = material;
- }
3、使用www类:
- //方法三
- IEnumerator LoadTextureFromFile3(string filePath)
- {
- // 创建一个WWW对象并加载本地图片
- WWW www = new WWW(filePath);
-
- yield return www;
-
- if (string.IsNullOrEmpty(www.error))
- {
- // 获取加载的纹理
- Texture2D texture = www.texture;
-
- image1.texture = texture;
- }
- else
- {
- Debug.LogError("下载失败:" + www.error);
- }
- }
4、由于www类在新版中已经过时了,所以在新版Unity中我们可以使用UnityWebRequest类加载本地图片:
- //方法四
- IEnumerator LoadTextureFromFile4(string filePath)
- {
- // 创建一个UnityWebRequest对象并加载本地图片
- UnityWebRequest www = UnityWebRequestTexture.GetTexture(filePath);
-
- yield return www.SendWebRequest();
-
- if (www.result == UnityWebRequest.Result.Success)
- {
- // 获取加载的纹理
- Texture2D texture = DownloadHandlerTexture.GetContent(www);
-
- image2.texture = texture;
- }
- else
- {
- Debug.LogError("下载失败:" + www.error);
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。