zoukankan      html  css  js  c++  java
  • 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 ,我们可以看到如下面板:
    image.png

    我们要确保上图中的模拟模式为勾选状态。

    确保环境之后,我们就可以开始进行资源的标记工作了。

    1. 资源标记

    在 Asset 目录下,只需对需要标记的文件或文件夹右键->@ResKit- AssetBundle Mark,如下所示:

    image.png

    标记成功后,我们可以看到如下结果:

    1. 该资源标记的选项为勾选状态
      image.png
    2. 该资源的 AssetLabel 中的名字如下
      image.png

    这样就标记成功了。

    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 上,运行后,结果如下:
    image.png

    资源加载成功。

    到此,Res Kit 的基本使用就介绍完毕。

    从下篇开始,开始逐步介绍 Res Kit 的方方面面。

    此篇内容就这些。

    • 转载请注明地址:凉鞋的笔记:liangxiegame.com。
    • 任何问题欢迎到 QQ 群:623597263 交流。
  • 相关阅读:
    Linux编程之epoll
    Linux IO模式及 select、poll、epoll详解
    与程序员相关的CPU缓存知识
    JDK源码阅读-FileOutputStream
    JDK源码阅读-FileInputStream
    JDK源码阅读-ByteBuffer
    Java如何保证文件落盘?
    Linux/UNIX编程如何保证文件落盘
    JDK源码阅读-RandomAccessFile
    JDK源码阅读-FileDescriptor
  • 原文地址:https://www.cnblogs.com/liangxiegame/p/11474431.html
Copyright © 2011-2022 走看看