ComponentsManager.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using UnityEngine;
  2. using Player.Wallet;
  3. /* 静态类,用于全局访问和管理游戏中的各类核心管理器 */
  4. public static class ComponentsManager
  5. {
  6. // 钱包管理器存储
  7. private static Storage<Wallet> _wallet = new Storage<Wallet>();
  8. // 主菜单UI管理器存储
  9. private static Storage<MenuUI> _menuUI = new Storage<MenuUI>();
  10. // 玩家数据管理器存储
  11. private static Storage<PlayerData> _playerData = new Storage<PlayerData>();
  12. // 游戏主UI管理器存储
  13. private static Storage<GameUI> _gameUI = new Storage<GameUI>();
  14. // 关卡管理器存储
  15. private static Storage<StagesManager> _stagesManager = new Storage<StagesManager>();
  16. // 玩家军队管理器存储
  17. private static Storage<PlayerArmyManager> _playerArmyManager = new Storage<PlayerArmyManager>();
  18. // 战斗管理器存储
  19. private static Storage<BattleManager> _battleManager = new Storage<BattleManager>();
  20. // 摄像机控制脚本存储
  21. private static Storage<CameraScript> _cameraScript = new Storage<CameraScript>();
  22. // 升级UI管理器存储
  23. private static Storage<UpgradeUI> _upgradeUI = new Storage<UpgradeUI>();
  24. // 教程引导管理器存储
  25. private static Storage<Tutorial> _tutorial = new Storage<Tutorial>();
  26. // 全局访问:玩家钱包
  27. public static Wallet PlayerWallet => _wallet.GetItem();
  28. // 全局访问:主菜单UI
  29. public static MenuUI MenuUI => _menuUI.GetItem();
  30. // 全局访问:玩家数据
  31. public static PlayerData PlayerData => _playerData.GetItem();
  32. // 全局访问:游戏主UI
  33. public static GameUI GameUI => _gameUI.GetItem();
  34. // 全局访问:关卡管理器
  35. public static StagesManager StagesManager => _stagesManager.GetItem();
  36. // 全局访问:玩家军队管理器
  37. public static PlayerArmyManager PlayerArmyManager => _playerArmyManager.GetItem();
  38. // 全局访问:战斗管理器
  39. public static BattleManager BattleManager => _battleManager.GetItem();
  40. // 全局访问:摄像机控制脚本
  41. public static CameraScript CameraScript => _cameraScript.GetItem();
  42. // 全局访问:升级UI
  43. public static UpgradeUI UpgradeUI => _upgradeUI.GetItem();
  44. // 全局访问:教程引导
  45. public static Tutorial Tutorial => _tutorial.GetItem();
  46. /// <summary>
  47. /// 泛型存储类,用于延迟查找和缓存各类管理器对象
  48. /// </summary>
  49. private class Storage<T> where T : Object
  50. {
  51. // 缓存的管理器对象
  52. private T _item;
  53. /// <summary>
  54. /// 获取管理器对象,若未缓存则自动查找并缓存
  55. /// </summary>
  56. /// <returns>类型为T的管理器对象</returns>
  57. public T GetItem()
  58. {
  59. if (_item == null)
  60. {
  61. _item = Object.FindObjectOfType<T>();
  62. }
  63. return _item;
  64. }
  65. }
  66. }