Unity 从Resources中动态加载Sprite图片的操作
作者:爱尚游Bin 发布时间:2023-08-26 11:37:18
标签:Unity,Resources,Sprite
我就废话不多说了,大家还是直接看代码吧~
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
0
投稿
猜你喜欢
- 一、为什么按值调用和按引用调用?方法或函数可以通过两种方式调用。一种是按值调用,另一种是按引用调用,这两种方式通常根据作为输入或参数传递给它
- 同线程回收对象上一小节剖析了从recycler中获取一个对象, 这一小节分析在创建和回收是同线程的前提下, recycler是如何进行回收的
- 下载地址:https://www.jb51.net/database/588158.html?_=1522396455592运行程序,关闭工
- 下载:1.在spring-mvc中配置(用于100M以下的文件下载)<bean class="org.springframe
- 初看 cgaolei 翻译的 Java技巧之双括弧初始化 一文,走马观花,只知用法,未细看后面的解释。蔚为惊艳,心里想 Java 竟然有这么
- 一、系统介绍 1.系统功能登录系统查询信息新增信息修改信息删除信息2.环境配置JDK版本:1.8Mysql:8.0.133.数据库
- Spring Boot 程序优化一、延迟初始化Bean一般在 SpringBoot 中都拥有很多的耗时任务,比如数据库建立连接、初始线程池的
- 23种设计模式第七篇:java代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个
- 本文实例为大家介绍了几个可用的类,供大家参考,具体内容如下1.SQLHelper类using System;using System.Col
- 使用线程池的好处1、降低资源消耗可以重复利用已创建的线程降低线程创建和销毁造成的消耗。2、提高响应速度当任务到达时,任务可以不需要等到线程创
- springBoot Junit测试用例出现@Autowired不生效前提条件:1,测试类上面添加支持的注解就能取到spring中的容器的实
- 关于idea2021最新激活教程,请点击此处,获取最新激活教程还有一种激活方法,点击此处获取吧 !下面看下IDEA 2021.2 启动报错问
- 【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1
- 目的了解ReentrantLock获取锁、释放锁的流程代码package com.company.aqs;import java.util.
- 一、背景spring-data-mongo 实现了基于 MongoDB 的 ORM-Mapping 能力,通过一些简单的注解、Query封装
- 前言小伙伴们在使用C#开发时,可能需要将一些信息写入到txt,这里就给大家介绍几种常用的方法。方法:1.将由字符串组成的数组写入txt此种方
- 前言:2022年Java将有什么新的特性和改进,我相信很多Java开发者都想知道。结合Java语言架构师布莱恩·格茨(
- 配置准备在build.gradle文件中添加如下依赖: compile "org.elasticsearc
- 依赖SpringBoot版本:2.4.2 <dependencies> &
- 1:和junit一起使用的时候因为没有读取配置文件,所以老是报创建Bean失败,上网查了查,原来是先要读取spring的核心配置文件,这样机