Unity 从Resources中动态加载Sprite图片的操作
作者:爱尚游Bin 时间:2023-08-26 11:37:18
我就废话不多说了,大家还是直接看代码吧~
public Sprite LoadSourceSprite(string relativePath)
{
//Debug.Log("relativePath=" + relativePath);
//把资源加载到内存中
Object Preb = Resources.Load(relativePath, typeof(Sprite));
Sprite tmpsprite = null;
try
{
tmpsprite = Instantiate(Preb) as Sprite;
}
catch ( System.Exception ex )
{
}
//用加载得到的资源对象,实例化游戏对象,实现游戏物体的动态加载
return tmpsprite;
//return Resources.Load(relativePath, typeof(Sprite)) as Sprite;
}
补充:Unity运行时动态加载本地图片
一、Unity运行时加载本地文件夹下所有图片的方法
用于在使用图片前加载完成
//引入命名空间
using System;
using System.IO;
/// <summary>
/// 加载图片的Byte[]数组
/// </summary>
/// <param name="filesName">地址</param>
public List<byte[]> LoadImage(string filesName)
{
List<byte[]> list = new List<byte[]>();
string tempPath ="E:\"+filesName; // 图片所在文件夹地址
List<string> filePaths = new List<string>();
string imgtype = "*.BMP|*.JPG|*.PNG";
string[] ImageType = imgtype.Split('|');
for (int i = 0; i < ImageType.Length; i++)
{
//文件夹下所有的图片路径
string[] dirs = Directory.GetFiles(tempPath, ImageType[i]);
for (int j = 0; j < dirs.Length; j++)
{
filePaths.Add(dirs[j]);
}
}
for (int i = 0; i < filePaths.Count; i++)
{
byte[] bs = getImageByte(filePaths[i]);
list.Add(bs);
}
return list;
}
#endregion
/// <summary>
/// 根据图片路径返回图片的字节流byte[]
/// </summary>
/// <param name="imagePath">图片路径</param>
/// <returns>返回的字节流</returns>
private byte[] getImageByte(string imagePath)
{
FileStream files = new FileStream(imagePath, FileMode.Open,FileAccess.Read);
files.Seek(0,SeekOrigin.Begin);
byte[] imgByte = new byte[files.Length];
files.BeginRead(imgByte,0,(int)files.Length,CallBack,files);
return imgByte;
}
/// <summary>
/// 异步加载
/// </summary>
/// <param name="ar"></param>
void CallBack(IAsyncResult ar)
{
FileStream fs = ar.AsyncState as FileStream;
fs.Close();
fs.Dispose();
}
用的时候:
List<byte[]> data=new List<byte[]>(); //临时接收图片数据流
List<Texture2D> turList=new List<Texture2D>(); //保存图片
data=加载类.LoadImage("测试图片");
foreach (byte[] item in data)
{
Texture2D tex = new Texture2D(100, 100, TextureFormat.RGBA32, false);
tex.LoadImage(item); //建议哪里调用哪里转 还可转精灵
turList.Add(tex);
}
二、临时加载一张图片
public static class ImageLoad {
public static Texture2D LoadImageByte(string path){
FileStream files=new FileStream (PathSet.dataPath+path,FileMode.Open,FileAccess.Read);
files.Seek(0,SeekOrigin.Begin);
byte[] imgByte=new byte[files.Length];
//少量临时加载会 红问号
//files.BeginRead(imgByte,0,(int)files.Length,CallBack,files);
files.Read(imgByte,0,imgByte.Length);
files.Close();
Texture2D tx=new Texture2D (512,512);
tx.LoadImage(imgByte);
return tx;
}
static void CallBack(IAsyncResult ar){
FileStream fileStream=ar.AsyncState as FileStream;
fileStream.Close();
fileStream.Dispose();
}
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/wks310/article/details/86061768
标签:Unity,Resources,Sprite
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android带进度条的文件上传示例(使用AsyncTask异步任务)
2023-06-24 09:43:11
![](https://img.aspxhome.com/file/2023/4/72624_0s.png)
Spring Cloud Alibaba 本地调试介绍及方案设计
2023-05-26 21:24:26
![](https://img.aspxhome.com/file/2023/9/74769_0s.png)
Android编程实现将ButtonBar放在屏幕底部的方法
2021-07-12 21:01:23
![](https://img.aspxhome.com/file/2023/6/106876_0s.png)
使用IDEA开发配置Java Web的初始化过程
2022-09-25 16:33:38
![](https://img.aspxhome.com/file/2023/4/64794_0s.jpg)
Android DigitalClock组件用法实例
2022-11-12 18:18:28
![](https://img.aspxhome.com/file/2023/6/139646_0s.png)
SpringBoot如何通过Feign调用传递Header中参数
2023-11-24 21:39:29
Android编程实现二维码的生成与解析
2021-12-08 23:13:15
详解Android中的MVP架构分解和实现
2022-11-30 08:06:29
![](https://img.aspxhome.com/file/2023/0/139080_0s.png)
Android实现摇一摇功能
2023-07-23 20:21:11
SpringBoot JSON全局日期格式转换器实现方式
2021-10-03 10:07:28
![](https://img.aspxhome.com/file/2023/4/132204_0s.png)
SpringMVC按Ctrl上传多个文件的方法
2023-11-25 07:19:04
![](https://img.aspxhome.com/file/2023/2/116172_0s.jpg)
Unity封装延时调用定时器
2022-10-14 05:43:53
Android使用SoundPool播放音效
2021-11-24 02:32:36
![](https://img.aspxhome.com/file/2023/4/139014_0s.jpg)
浅谈Silverlight 跨线程的使用详解
2021-10-16 01:23:05
![](https://img.aspxhome.com/file/2023/7/79057_0s.gif)
详解SpringBoot缓存的实例代码(EhCache 2.x 篇)
2023-04-05 04:55:18
![](https://img.aspxhome.com/file/2023/1/77931_0s.jpg)
C#实现简单的RSA非对称加密算法示例
2022-07-09 18:16:37
![](https://img.aspxhome.com/file/2023/1/106381_0s.jpg)
详解spring boot 使用application.properties 进行外部配置
2023-02-13 02:09:11
![](https://img.aspxhome.com/file/2023/7/125227_0s.png)
C#记录消息到日志文件的方法
2021-09-17 23:10:39
Android开发微信APP支付功能的要点小结
2023-02-22 12:34:20
Java 超详细讲解类的定义方式和对象的实例化
2021-09-11 17:38:29
![](https://img.aspxhome.com/file/2023/9/70939_0s.png)