using QFramework;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestResKit : MonoBehaviour
{ResLoader mResLoader = ResLoader.Allocate();private void Awake(){}/// <summary>/// 每一个需要加载资源的单元(脚本,界面)申请一个ResLoader/// ResLoader 本身会记录该脚本加载过的资源/// </summary>/// <summary>/// 通过 LoadSync 同步加载资源/// 只需要传入资源名就行,不需要传入AssetBundle名/// </summary>void Start(){this.GetComponent<SpriteRenderer>().sprite= mResLoader.LoadSync<Sprite>("forest_of_whispers_verdant_woods_tiles") ;}private void OnDestroy(){// 释放所有本脚本加载过的资源// 释放只是释放资源的引用// 当资源的引用数量为 0,会进行真正的卸载操作mResLoader.Recycle2Cache();mResLoader = null;}
}
使用方法就是,把这个脚本贴在需要加载资源的controller上。
用它来加载资源!这样如果自己没有了,资源就会自己回收自己
然后别忘了在什么地方吧这个初始化一下
ResMgr.Init();
另外一个,就是加载一些数据或者图片集,可以这样做:
public Sprite GetGoalLevelSprite(string id){var spriteAtlas = mResLoader.LoadSync<SpriteAtlas>(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>("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;}}