前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >QFramework 使用指南 (2020) - Res Kit(3)异步加载 与 异步队列加载

QFramework 使用指南 (2020) - Res Kit(3)异步加载 与 异步队列加载

作者头像
零式的天空
发布2022-03-21 17:30:40
6250
发布2022-03-21 17:30:40
举报
文章被收录于专栏:零域Blog零域Blog

在上一篇我们了解了 Res Kit 的一些背后设计原理,讲解了一些概念,比如:开发阶段、真机阶段等。

在这一篇,我们回到 Res Kit 使用细节上。

在 Res Kit 的第一篇,我们介绍了 Res Kit 的基本使用,代码如下:

代码语言:javascript
复制
using QF.Res;
using QF.Extensions;
using UnityEngine;

namespace QF.Example 
{
	public class TestResKit : MonoBehaviour 
	{

		void Awake () 
		{
			// 全局只需初始化一次
			ResMgr.Init ();
		}

		/// <summary>
		/// 每一个需要加载资源的单元(脚本、界面)申请一个 ResLoader
		/// ResLoader 本身会记录该脚本加载过的资源
		/// </summary>
		/// <returns></returns>
		ResLoader mResLoader = ResLoader.Allocate ();

		void Start () 
		{
			// 通过 LoadSync 同步加载资源
			// 只需要传入资源名即可,不需要传入 AssetBundle 名。
			mResLoader.LoadSync<GameObject> ("TestObj")
				.Instantiate ();
		}

		void OnDestroy()
		{
			// 释放所有本脚本加载过的资源
			// 释放只是释放资源的引用
			// 当资源的引用数量为 0 时,会进行真正的资源卸载操作
			mResLoader.Recycle2Cache();
			mResLoader = null;
		}
	}
}

我们把目光聚焦到 加载相关的代码,如下:

代码语言:javascript
复制
// 通过 LoadSync 同步加载资源
// 只需要传入资源名即可,不需要传入 AssetBundle 名。
mResLoader.LoadSync<GameObject> ("TestObj")
      .Instantiate ();

代码中,我们通过 mResLoader.LoadSync 加载资源,LoadSync 意思是同步加载。有同步加载对应地,就有异步加载。

异步加载

异步加载代码如下:

代码语言:javascript
复制
// 添加到加载队列
mResLoader.Add2Load("TestObj",(succeed,res)=>{
    if (succeed) 
    {
        res.Asset.As<GameObject>()
						.Instantiate();
    }
});

// 执行异步加载
mResLoader.LoadAsync();

与 LoadSync 不同的是,异步加载是分两步的,第一步是添加到加载队列,第二步是执行异步加载。

这样做是为了支持同时异步加载多个资源的。

同时异步加载多个资源

代码如下:

代码语言:javascript
复制
// 添加一个资源
mResLoader.Add2Load("TestObj",(succeed,res)=>{
    if (succeed) 
    {
        res.Asset.As<GameObject>()
            .Instantiate();
    }
});

// 加载一个资源,不处理
mResLoader.Add2Load("TestObj1",(succeed,res)=>{});

// 加载一个列表中的资源
mResLoader.Add2Load(new List<string>(){ "TestObj2","TestObj3","TestObj4"});

// 执行加载操作
mResLoader.LoadAsync(()=>{
  // 可以监听所有的资源是否加载成功
  "资源加载成功".LogInfo();
});

代码比较简单,考虑了多种加载情况。

此篇的内容就这些。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 异步加载
  • 同时异步加载多个资源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档