1、Resources异步加载
如果加载过多、过大的资源可能会造成程序卡顿,卡顿的原因时从硬盘上把数据读取到内存中,是需要进行计算的,越大的资源耗时越长,就会造成掉帧卡顿。
Resources异步加载,就是内部新开一个线程进行资源加载,不会造成主线程卡顿
2、Resources异步加载方法
注意:异步加载不能马上得到加载的资源,至少要等一帧
(1)通过异步加载中的完成事件监听,使用加载的资源
刚刚执行了异步加载的执行代码资源还没有加载完毕,不能直接使用,一定要等加载结束后才能使用
Texture tex;
private void LoadOver(AsyncOperation rq) {
print("加载结束")
tex = (rq as ResourceRequest).asset
......
}
// 新开一个线程进行资源加载
ResourceRequest rq = Resource.LoadAsync<Texture>("Tex/TestJpg");
// 资源加载结束后进行相关的事件监听回调
rq.completed += LoadOver;
private void Update() {
// 使用前要对tex进行判空
if (tex != null)
......
}
(2)通过协程使用加载的资源
StartCoroutine(Load());
IEnumerator Load() {
// 迭代器函数遇到yield return时就会停止执行之后的代码(分步)
// 然后协程协调器通过得到返回的值,去判断下一次执行后面的时间(分时)
ResourceRequest rq = Resource.LoadAsync<Texture>("Tex/TestJpg");
// 注意:ResourceRequest的基类和 WaitForSeconds是一

本文介绍了Unity中Resources异步加载的重要性,以避免因加载大资源导致的程序卡顿。详细阐述了两种异步加载方法:通过完成事件监听和使用协程,并对比了它们在处理复杂逻辑和并行加载上的差异。对于需要实现异步加载单例和避免重复加载的场景,提供了一种可能的实现思路。
最低0.47元/天 解锁文章
3875

被折叠的 条评论
为什么被折叠?



