Qframework 中超级方便的kitres


using QFramework;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;



public class TestResKit : MonoBehaviour
{
    ResLoader mResLoader = ResLoader.Allocate();
    private void Awake()
    {

    }

    /// 
    /// 每一个需要加载资源的单元(脚本,界面)申请一个ResLoader
    /// ResLoader 本身会记录该脚本加载过的资源
    /// 
    


    /// 
    /// 通过 LoadSync 同步加载资源
    /// 只需要传入资源名就行,不需要传入AssetBundle名
    /// 
    void Start()
    {
        this.GetComponent().sprite= mResLoader.LoadSync("forest_of_whispers_verdant_woods_tiles") ;
    }

    private void OnDestroy()
    {
        // 释放所有本脚本加载过的资源
        // 释放只是释放资源的引用
        // 当资源的引用数量为 0,会进行真正的卸载操作
        mResLoader.Recycle2Cache();
        mResLoader = null;
    }
}

使用方法就是,把这个脚本贴在需要加载资源的controller上。

用它来加载资源!这样如果自己没有了,资源就会自己回收自己

Qframework 中超级方便的kitres_第1张图片

然后别忘了在什么地方吧这个初始化一下

            ResMgr.Init();

另外一个,就是加载一些数据或者图片集,可以这样做:

        public Sprite GetGoalLevelSprite(string id)
        {
            var spriteAtlas = mResLoader.LoadSync(GameConfig.GoalMapAtlasPath);
            var icon = spriteAtlas.GetSprite(id);
            mResLoader.AddObjectForDestroyWhenRecycle2Cache(icon);
            return icon;
        }
  public class ConfigSystem : BaseSystem, IConfigSystem
    {
        private ResLoader mResLoader = ResLoader.Allocate();

        private cfg.Tables tables;
        public cfg.Tables Tables => tables;

        public override void RegisterEvents()
        {
            tables = new cfg.Tables(file =>
                JSON.Parse(Resources.Load("TextAsset/JsonConfig/" + file).text));

        }

        public cfg.LevelMapSet GetMapSet(string id)
        {
            cfg.LevelMapSet result;
            try
            {
                result = Tables.TbLevelMap.Get(id);
            }
            catch (Exception e)
            {
                Debug.LogError($"TbLevelMap id: {id} {e}");
                throw;
            }

            return result;
        }
    }

你可能感兴趣的:(unity,框架,qframework,资源加载)