在上一篇我们了解了 Res Kit 的一些背后设计原理,讲解了一些概念,比如:开发阶段、真机阶段等。
在这一篇,我们回到 Res Kit 使用细节上。
在 Res Kit 的第一篇,我们介绍了 Res Kit 的基本使用,代码如下:
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; } } }我们把目光聚焦到 加载相关的代码,如下:
// 通过 LoadSync 同步加载资源 // 只需要传入资源名即可,不需要传入 AssetBundle 名。 mResLoader.LoadSync<GameObject> ("TestObj") .Instantiate ();代码中,我们通过 mResLoader.LoadSync 加载资源,LoadSync 意思是同步加载。有同步加载对应地,就有异步加载。
异步加载代码如下:
// 添加到加载队列 mResLoader.Add2Load("TestObj",(succeed,res)=>{ if (succeed) { res.Asset.As<GameObject>() .Instantiate(); } }); // 执行异步加载 mResLoader.LoadAsync();与 LoadSync 不同的是,异步加载是分两步的,第一步是添加到加载队列,第二步是执行异步加载。
这样做是为了支持同时异步加载多个资源的。
代码如下:
// 添加一个资源 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(); });代码比较简单,考虑了多种加载情况。
此篇的内容就这些。
转载请注明地址:凉鞋的笔记:liangxiegame.com。任何问题欢迎到 QQ 群:623597263 交流。更多内容关注微信公众号:liangxiegame转载于:https://www.cnblogs.com/liangxiegame/p/11498370.html