微信登录

ResourcesManager.cs - 资源加载

ResourcesManager.cs

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Events;
  5. /// <summary>
  6. /// 资源加载模块
  7. /// 异步、委托、协程、泛型
  8. /// </summary>
  9. public class ResourcesManager : BaseManager<ResourcesManager>
  10. {
  11. //同步
  12. public T Load<T>(string name) where T:Object
  13. {
  14. T res = Resources.Load<T>(name);
  15. //如果对象是GameObject 实例化后就可以返回
  16. if (res is GameObject)
  17. return Object.Instantiate(res);
  18. else//textasset Audio
  19. return res;
  20. }
  21. //异步加载资源
  22. public void LoadAsync<T>(string name , UnityAction<T> callback) where T : Object
  23. {
  24. MonoManager.GetInstance().StartCoroutine(ReallyLoadAsync(name, callback));//开启异步加载资源
  25. }
  26. //开启异步加载资源
  27. private IEnumerator ReallyLoadAsync<T>(string name, UnityAction<T> callback) where T : Object
  28. {
  29. ResourceRequest r = Resources.LoadAsync<T>(name);
  30. yield return r ;
  31. if (r.asset is GameObject)
  32. callback(GameObject.Instantiate(r.asset) as T);
  33. else
  34. callback(r.asset as T);
  35. }
  36. }
ResourcesManager.cs - 资源加载