QFramework 使用指南 2020(七):Res Kit (1)概述与基本使用
在上一篇,我们刚刚结束了 脚本生成专题,我们知道 QF 提供了两种脚本生成模式,一种是 ViewController + Bind ,另一种是 UI Kit 模式。
本来打算,介绍完 ViewController + Bind 模式后,再介绍 UI Kit 模式。
但是在学习 UI Kit 之前,我们需要先了解一点 Res Kit。
Res Kit 简介
Res Kit,是 QF 的一大杀器,顾名思义,它是负责资源的。
特性如下:
- 可以使用一个 API 从 dataPath、Resources、StreammingAssetPath、PersistentDataPath、网络等地方加载资源。
- 基于引用计数,简化资源加载和卸载。
- 拥抱游戏开发流程中的不同阶段
- 开发阶段不用打 AB 直接从 dataPath 加载。
- 测试阶段支持只需打一次 AB 即可。
- 可选择生成资源名常量代码,减少拼写错误。
- 异步加载队列支持
- 对于 AssetBundle 资源,可以只通过资源名而不是 AssetBundle 名 + 资源名 加载资源,简化 API 使用。
废话不多说,直接开始从最基本的使用开始 。
Res Kit 基本使用
我们知道,在一般情况下,有两种方式可以让我们实现动态加载资源:
- Resources
- AssetBundle
在 Res Kit 中,推荐使用 AssetBundle 的方式进行加载,因为 Res Kit 所封装的 AssetBundle 方式,比 Resources 的方式更好用。
除了 Res Kit 中的 AsseBundle 方式更易用外,AssetBundle 本身相比 Resources 有更多的优点,比如更小的包体,支持热更等。
废话不多说,我们看下 Res Kit 的基本使用。
Res Kit 在开发阶段,分为两步。
- 标记资源
- 写代码
在开始之前,我们要确保,当前的 Res Kit 环境为模拟模式。
按下快捷键 ctrl + e 或者 ctrl + shift + r ,我们可以看到如下面板:

我们要确保上图中的模拟模式为勾选状态。
确保环境之后,我们就可以开始进行资源的标记工作了。
1. 资源标记
在 Asset 目录下,只需对需要标记的文件或文件夹右键->@ResKit- AssetBundle Mark,如下所示:

标记成功后,我们可以看到如下结果:
- 该资源标记的选项为勾选状态

- 该资源的 AssetLabel 中的名字如下

这样就标记成功了。
2.资源加载
接下来我们直接写资源加载的代码即可,代码如下,具体的代码含义,看注释即可。。
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;
}
}
}
将此脚本挂到任意 GameObject 上,运行后,结果如下:

资源加载成功。
到此,Res Kit 的基本使用就介绍完毕。
从下篇开始,开始逐步介绍 Res Kit 的方方面面。
此篇内容就这些。
- 转载请注明地址:凉鞋的笔记:liangxiegame.com。
- 任何问题欢迎到 QQ 群:623597263 交流。
QFramework 使用指南 2020(七):Res Kit (1)概述与基本使用的更多相关文章
- QFramework 使用指南 2020(九):Res Kit(3)异步加载 与 异步队列加载
在上一篇我们了解了 Res Kit 的一些背后设计原理,讲解了一些概念,比如:开发阶段.真机阶段等. 在这一篇,我们回到 Res Kit 使用细节上. 在 Res Kit 的第一篇,我们介绍了 Res ...
- QFramework 使用指南 2020(八):Res Kit(2)模拟模式与非模拟模式
在上一篇,介绍了 Res Kit 的基本使用,相信大家已经体会到了 Res Kit 的简便之处了. 在这一篇,我们试着探讨一下 Res Kit 的设计背后原理. AssetBundle 的不便之处 在 ...
- QFramework 使用指南 2020(二):下载与版本介绍
目前 QFramework 有两个可供安装的版本 PackageKit:QFramework 的插件平台,可以下载只感兴趣的插件,除了 Framework 模块还有一些 Shader 案例.项目模板. ...
- QFramework 使用指南 2020 (一): 概述
大家好,我是 QFramework 的作者 凉鞋,QFramework 从第一次代码提交到现在快 5 年了,期间陆陆续续增加了很多功能,在使用体验上做了大量的改进. 而市面上关于 QFramework ...
- QFramework 使用指南 2020(三):脚本生成(1)基本使用
在上一篇,我们对 QFramework 的两个主要版本提供了介绍,并且写下了第一个 QFramework 脚本. 在这一篇,我们学习 QFramework 中几乎每个项目都要用到并且从中受益的功能:自 ...
- QFramework 使用指南 2020(六):脚本生成(4)小结与补充
我们花了四篇文章,介绍了 QF 中的脚本生成功能. 实际上 QF 中的脚本生成是有两种的,第一种就是我们现在学习的 ViewController + Bind 模式. 这种模式是为除 UGUI 以外的 ...
- QFramework 使用指南 2020(五):脚本生成(3)生成 Prefab
在上一篇,我们简单介绍了 ViewController 的嵌套实现. 在这一篇,我们学习 ViewController 脚本生成的最后一个功能,即:生成 Prefab. 实际上这个功能非常简单. 我们 ...
- QFramework 使用指南 2020 (四):脚本生成(2)ViewController 与 ViewController 嵌套绑定
在上一篇,我们学习了,脚本生成的基本使用. 在这一篇,我们试着深入,聊聊脚本生成给我们带来的便利. 脚本生成的便利 首先,我们要知道,在 Unity 的游戏世界中都是以 GameObject 为单位的 ...
- Knockout应用开发指南 第七章:Mapping插件
原文:Knockout应用开发指南 第七章:Mapping插件 Mapping插件 Knockout设计成允许你使用任何JavaScript对象作为view model.必须view model的一些 ...
随机推荐
- TestNG中DataProvider的用法一
目录 为什么要使用DataProvider DataProvider的常规用法 带Method参数的DataProvider 带ITestContext的DataProvider DataProvid ...
- 深入学习 Intellij IDEA 调试技巧
程序员的日常工作除了写代码之外,很大一部分时间将会在查找 BUG,解决问题.查找 BUG,离不开在 IDE 中调试代码.熟练的掌握调试技巧,可以帮助我们减少查找时间,快速定位问题. 在 IDEA 中调 ...
- KD-tree 专题「Hide and Seek · 巧克力王国」
Lockey的瞎理解 抄了一遍板子又水了俩题,感觉对KD-tree 稍稍理解了一点儿,唠叨一下(二维的KD-tree),如有错误请指出(Lockey 洗脸恭听) 普通平衡树维护的是一维的序列,但对于二 ...
- Linux - 查看端口的占用情况、找出并杀死占用进程的方法
目录 1 lsof查看端口的占用情况 1.1 命令使用示例 1.2 查看某一端口的占用情况 1.3 杀死某个端口的所有进程 2 netstat查看端口占用情况 2.1 命令使用示例 2.2 查看占用某 ...
- Fork 多进程 模拟并行访问web service获取响应时间差
#include <ros/ros.h> #include <iostream> #include <string> #include <cstring> ...
- Java——检测其他线程的状态以及启动已死亡的线程
这次这个的思路是在主类中维护一个map,map的key是线程名,value是线程的状态,然后创建周期执行的线程通过检测这个map来判断进程的状态,如果有死亡的进程就把该进程启动. 首先是主类,这里的m ...
- imageloader+图片压缩
public class MainActivity extends AppCompatActivity { private ImageView ivIcon; @Override protected ...
- git submodule 子模块
### 背景:为什么要用子模块? 在开发项目中可能会遇到这种问题:在你的项目中使用另一个项目,也许这是一个第三方开发的库,或者是你独立开发的并在多个父项目中使用的.简单来说就是A同学开发了一个模块,被 ...
- 100天搞定机器学习|Day22 机器为什么能学习?
前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...
- 如何以python风格高逼格的改成购物车逻辑
之前有一篇博文写到关于购物车的业务逻辑,分别运用cookie和redis存储未登录和登录用户的购物车数据,虽然已经很好的完成了业务逻辑,但是会发现代码的冗余很严重,也不够具有python特色,今天就让 ...