Newer
Older
DungeonShooting / src / manager / ResourceManager.cs
@小李xl 小李xl on 15 Jun 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. private static readonly Dictionary<string, object> CachePack = new Dictionary<string, object>();
  24.  
  25. /// <summary>
  26. /// 加载资源对象, 并且缓存当前资源对象, 可频繁获取
  27. /// </summary>
  28. /// <param name="path">资源路径</param>
  29. public static T Load<T>(string path) where T : class
  30. {
  31. if (CachePack.TryGetValue(path, out var pack))
  32. {
  33. return (T)pack;
  34. }
  35. else
  36. {
  37. pack = ResourceLoader.Load(path);
  38. if (pack != null)
  39. {
  40. CachePack.Add(path, pack);
  41. return (T)pack;
  42. }
  43. }
  44. return default(T);
  45. }
  46.  
  47. /// <summary>
  48. /// 加载并实例化一个武器对象
  49. /// </summary>
  50. /// <param name="path">资源路径</param>
  51. public static Gun LoadGunAndInstance(string path)
  52. {
  53. var pack = Load<PackedScene>(path);
  54. if (pack != null) {
  55. return pack.Instance<Gun>();
  56. }
  57. return null;
  58. }
  59.  
  60. }