- 资源加载管理器,使用 Resources.Load 和 Resources.LoadAsync加载 Resources资源文件夹下的资源,实现接口封装。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
//资源加载模块
public class ResLoadMgr : SingletonBase<ResLoadMgr>
{
//同步加载资源
public T LoadRes<T>(string name) where T: Object{
T res = Resources.Load<T>(name);
//如果对象是一个GameObject类型的,我把它实例化后,再返回出去直接使用。
if (res is GameObject)
return GameObject.Instantiate(res);
else //else情况示例:TextAsset、AudioClip
return res;
}
//异步加载资源
public void LoadResAsync<T>(string name, UnityAction<T> callback) where T: Object
{
//开启异步加载的协程
MonoMgr.GetInstance().StartCoroutine(ILoadResAsync<T>(name, callback));
}
private IEnumerator ILoadResAsync<T>(string name, UnityAction<T> callback) where T: Object{
ResourceRequest r = Resources.LoadAsync<T>(name);
yield return r;
if (r.asset is GameObject)
{
//实例化一下再传给方法
callback(GameObject.Instantiate(r.asset) as T);
}
else {
//直接传给方法
callback(r.asset as T);
}
}
}
其中涉及:
外接Mono生命周期方法:https://blog.csdn.net/hycai_007/article/details/121771963