QFramework框架学习
前言
Res Kit,是资源管理&快速开发解决方案
特性如下:
可以使用一个 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 有更多的优点,比如更小的包体,支持热更等。
二、使用步骤
1.使用方式
代码如下(示例):
using QFramework;
using System.Collections.Generic;
using UnityEngine;
public class LoadAsync : MonoBehaviour
{
ResLoader mResLoader = ResLoader.Allocate();
public List<string> assetNames;
public Transform InstanceParent;
// Start is called before the first frame update
[ContextMenu("Copy")]
void Start()
{
ResMgr.Init();
InstanceParent = GameObject.Find("Models").transform;
//异步加载
for (int i = 0; i < assetNames.Count; i++)
{
mResLoader.Add2Load(assetNames[i], (succeed, res) =>
{
if (succeed)
{
if (InstanceParent != null)
{
res.Asset.As<GameObject>().Instantiate().transform.parent = InstanceParent;
}
else
{
res.Asset.As<GameObject>().Instantiate();
}
}
});
}
mResLoader.LoadAsync(ResourceLoadingCompleted);
}
/// <summary>
/// 资源加载完成后的处理
/// </summary>
private void ResourceLoadingCompleted()
{
}
private void OnDestroy()
{
mResLoader.Recycle2Cache();
mResLoader = null;
}
}