Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / manager / ResourceManager.cs
  1. using System.Collections.Generic;
  2. using Godot;
  3.  
  4. public static class ResourceManager
  5. {
  6. /// <summary>
  7. /// 颜色混合材质
  8. /// </summary>
  9. public static ShaderMaterial BlendMaterial
  10. {
  11. get
  12. {
  13. if (_shadowMaterial == null)
  14. {
  15. _shadowMaterial = ResourceLoader.Load<ShaderMaterial>(ResourcePath.resource_materlal_Blend_tres);
  16. }
  17. return _shadowMaterial;
  18. }
  19. }
  20. private static ShaderMaterial _shadowMaterial;
  21.  
  22. /// <summary>
  23. /// 颜色混合Shader
  24. /// </summary>
  25. public static Shader BlendShader
  26. {
  27. get
  28. {
  29. if (_shadowShader == null)
  30. {
  31. _shadowShader = ResourceLoader.Load<Shader>(ResourcePath.resource_materlal_Blend_gdshader);
  32. }
  33. return _shadowShader;
  34. }
  35. }
  36. private static Shader _shadowShader;
  37.  
  38. private static readonly Dictionary<string, object> CachePack = new Dictionary<string, object>();
  39.  
  40. /// <summary>
  41. /// 加载资源对象, 并且缓存当前资源对象, 可频繁获取
  42. /// </summary>
  43. /// <param name="path">资源路径</param>
  44. public static T Load<T>(string path) where T : class
  45. {
  46. if (CachePack.TryGetValue(path, out var pack))
  47. {
  48. return pack as T;
  49. }
  50. else
  51. {
  52. pack = ResourceLoader.Load(path);
  53. if (pack != null)
  54. {
  55. CachePack.Add(path, pack);
  56. return pack as T;
  57. }
  58. }
  59. return default(T);
  60. }
  61. }