【QFramework】学习记录01-ResKit

981 阅读2分钟

原教程地址

1.加载AssetBundle资源

1.标记资源

右键->@ResKit- AssetBundle Mark

2.加载资源
2.1 同步加载
mResLoader.LoadSync<GameObject> ("资源名不是AssetBundle 名","可选包名").Instantiate ()
2.2 异步加载
// 添加到加载队列
mResLoader.Add2Load("TestObj",(succeed,res)=>{
    if (succeed) 
    {
        res.Asset.As<GameObject>().Instantiate();
    }
});

// 执行异步加载
mResLoader.LoadAsync();
2.3 同时异步加载多个资源
// 添加一个资源
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();
});
2.4 加载Sprite
var sprite = mResLoader.LoadSprite ("TestSprite");
var spriteRenderer = GetComponent<SpriteRenderer>();
spriteRenderer.sprite = sprite;
  1. 确保 Unity 的 Editor 设置里支持了 Legacy Sprite Packager
  2. Res Kit 中推荐使用 LoadSprite 加载 Sprite 类型
  3. 非模拟模式下:精灵图片必须要输入 Packing Tag(打图集)
    4.这是 Unity AssetBundle 的坑,不是 Res Kit 的坑

2.从 Resources 中加载资源

var sprite = mResLoader.LoadSprite ("resources://TestSprite");
var spriteRenderer = GetComponent<SpriteRenderer>();
spriteRenderer.sprite = sprite;

3.从网络中加载资源

var imageUrl = "http://file.liangxiegame.com/296b0166-bdea-47d5-ac87-4b55c91df16f.png";

mResLoader.Add2Load ("netimage:" + imageUrl,(succeed,res) => {
    if (succeed) 
    {
        var spriteRenderer = GetComponent<SpriteRenderer>();
        var texture2D = res.Asset as Texture2D;
        var sprite = Sprite.Create(texture2D,new Rect(0,0,texture2D.width,texture2D.height),Vector2.one * 0.5f);
        spriteRenderer.sprite = sprite;
    }
});

mResLoader.LoadAsync();

4.从本地加载资源

从本地加载资源,实际上是从 Application.persistentDataPath 中加载资源。 使用方式很简单,只需要加上 localimage: 前缀即可。

5.代码生成

image.png

6.场景加载

一个场景标记为一个 AssetBundle
场景的加载不支持 Simulation Mode,所以在开发阶段可以把场景放到 Resources 目录下,然后用 ResLoaer 加上 resources:// 前缀加载资源,等到发布的时候,再把 场景做成 AssetBundle。

mResLoader.LoadSync("SceneRes");
SceneManager.LoadScene("SceneRes");

7.自定义扩展Res

教程

8.小结

同步加载资源 ResLoader.LoadSync
异步加载资源 ResLoader.Add2Load + LoadAsync
加载 AB 资源:
  1. ResLoader.LoadSync(assetName)
  2. ResLoader.LoadSync(abName,assetName)
  3. 支持异步(LoadAsync)
加载 Resources 资源:
  1. ResLoader.LoadSync("resources://" + assetPath);
  2. 支持异步(LoadAsync)
加载网络图片

ResLoader.Add2Load("netimage:" + imageUrl,(succeed,res)=>{});

开发阶段建议使用 模拟模式
真机阶段建议使用 非模拟模式
模拟模式 资源工作流
  1. 标记 AB
  2. 代码加载
非模拟模式 资源工作流
  1. 标记 AB(不推荐在非模拟模式下添加资源,建议在开发阶段添加资源)
  2. 打AB包
  3. 代码加载
ResMgr.Init 需要在项目启动时调用一次
ResLoader 建议每个需要加载的脚本,都申请一个。