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