
ResourcesManager.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;/// <summary>/// 资源加载模块/// 异步、委托、协程、泛型/// </summary>public class ResourcesManager : BaseManager<ResourcesManager>{//同步public T Load<T>(string name) where T:Object{T res = Resources.Load<T>(name);//如果对象是GameObject 实例化后就可以返回if (res is GameObject)return Object.Instantiate(res);else//textasset Audioreturn res;}//异步加载资源public void LoadAsync<T>(string name , UnityAction<T> callback) where T : Object{MonoManager.GetInstance().StartCoroutine(ReallyLoadAsync(name, callback));//开启异步加载资源}//开启异步加载资源private IEnumerator ReallyLoadAsync<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);elsecallback(r.asset as T);}}