Resources资源动态加载
1. Resources资源动态加载的作用
- 通过代码动态加载Resources文件夹下指定路径资源
- 避免繁琐的拖曳操作
2.常用资源类型
1.预设体对象——GameObject
2.音效文件——AudioClip
3.文本文件——TextAsset
4.图片文件——Texture
5.其它类型
预设体对象加载需要实例化,其它资源加载一般直接用
3.资源同步加载 普通方法
- 在一个工程当中 Resources文件夹 可以有多个 通过API加载时 它会自己去这些同名的Resources文件夹中去找资源 打包时 Resources文件夹 里的内容 都会打包在一起.
- 预设体对象:第一步:要去加载预设体的资源文件(本质上 就是加载 配置数据 在内存中) 第二步:如果想要在场景上 创建预设体 一定是加载配置文件过后 然后实例化
Object obj = Resources.Load("Cube");
Instantiate(obj);
预设体的初始化操作是必须的
3.音效资源:第一步:就是加载数据 第二步:使用数据 我们不需要实例化 音效切片 我们只需要把数据 赋值到正确的脚本上即可
public AudioSource audioS;
Object obj3 = Resources.Load("Music/BKMusic");
audioS.clip = obj3 as AudioClip;
audioS.Play();
4.文本资源:支持主流格式包括 txt,xml,bytes,json,html,csv……
TextAsset ta = Resources.Load("Txt/Test") as TextAsset;
print(ta.text);
5.图片资源
private Texture tex;
tex = Resources.Load("Tex/TestJPG") as Texture;
6.资源同名问题
显然Resources.Load加载同名资源时 无法准确加载出你想要的内容
解决方案有:
(1)加载指定类型的资源
tex = Resources.Load("Tex/TestJPG", typeof(Texture)) as Texture;
(2)加载指定名字的所有资源
Object[] objs = Resources.LoadAll("Tex/TestJPG");
foreach (Object item in objs)
if (item is Texture)
else if (item is TextAsset)
4. 解决资源类型和同名问题 泛型方法
unity在Resources中提供了泛型接口 直接在使用的时候定义好类型即可
TextAsset ta2 = Resources.Load<TextAsset>("Tex/TestJPG");
print(ta2.text);
tex = Resources.Load<Texture>("Tex/TestJPG");