FacadeComponent.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. using UnityEngine;
  2. using UnityEngine.Events;
  3. namespace WS
  4. {
  5. [ObjectSystem]
  6. public class FacadeComponentAwake : AwakeSystem<FacadeComponent>
  7. {
  8. public override void Awake(FacadeComponent self)
  9. {
  10. self.Awake();
  11. }
  12. }
  13. ///<summary>MVC 中介者</summary>
  14. public class FacadeComponent : WSComponent
  15. {
  16. public static FacadeComponent Instance;
  17. //Model管理器
  18. private ModelManager _ModelManager;
  19. //View管理器
  20. private ViewManager _ViewManager;
  21. //Controller管理器
  22. private ControllerManager _ControllerManager;
  23. public void Awake()
  24. {
  25. Instance = this;
  26. _ModelManager = AddComponent<ModelManager>();
  27. _ViewManager = AddComponent<ViewManager>();
  28. _ControllerManager = AddComponent<ControllerManager>();
  29. }
  30. #region ---- View ----
  31. ///<summary>打开窗口</summary>
  32. public V OpenView<V>(UnityAction opencallback = null) where V : View
  33. {
  34. return _ViewManager.OpenView<V>(opencallback);
  35. }
  36. ///<summary>打开克隆窗口</summary>
  37. public V OpenView<V>(string clone, UnityAction opencallback = null) where V : View
  38. {
  39. return _ViewManager.OpenView<V>(clone, opencallback);
  40. }
  41. ///<summary>打开窗口</summary>
  42. public V OpenView<V>(ViewShowModeType showmode, UnityAction opencallback = null) where V : View
  43. {
  44. return _ViewManager.OpenView<V>(showmode, opencallback);
  45. }
  46. ///<summary>打开克隆窗口</summary>
  47. public V OpenView<V>(ViewShowModeType showmode, string clone, UnityAction opencallback = null) where V : View
  48. {
  49. return _ViewManager.OpenView<V>(showmode, clone, opencallback);
  50. }
  51. ///<summary>关闭窗口</summary>
  52. public void CloseView(View view, UnityAction closecallback)
  53. {
  54. _ViewManager.CloseView(view, closecallback);
  55. }
  56. ///<summary>创建ViewCanvas</summary>
  57. public void CreateViewCanvas(ViewShowModeType viewshow, Transform root)
  58. {
  59. _ViewManager.CreateViewCanvas(viewshow, root);
  60. }
  61. ///<summary>获取ViewCanvas</summary>
  62. public ViewCanvas GetViewCanvas(ViewShowModeType viewshow)
  63. {
  64. return _ViewManager.GetViewCanvas(viewshow);
  65. }
  66. ///<summary>移除ViewCanvas</summary>
  67. public void RemoveViewCanvas(ViewShowModeType viewshow)
  68. {
  69. _ViewManager.RemoveViewCanvas(viewshow);
  70. }
  71. #endregion
  72. #region ---- Model ----
  73. ///<summary>注册/创建Model</summary>
  74. public T CreateModel<T>() where T : Model
  75. {
  76. return _ModelManager.CreateModel<T>();
  77. }
  78. ///<summary>删除Model</summary>
  79. public void RemoveModel(Model model)
  80. {
  81. _ModelManager.Remove(model);
  82. }
  83. ///<summary>删除所有Model</summary>
  84. public void RemoveAllModel()
  85. {
  86. _ModelManager.RemoveAll();
  87. }
  88. #endregion
  89. #region ---- Controller ----
  90. /// <summary>注册/创建控制器</summary>
  91. /// <param name="isenterlibrary">是否存入集合(存入后不能重复创建)</param>
  92. public T CreateController<T>(bool isenterlibrary = true) where T : BaseController
  93. {
  94. return _ControllerManager.CreateController<T>(isenterlibrary);
  95. }
  96. ///<summary>删除控制器</summary>
  97. public void RemoveController<T>() where T : BaseController
  98. {
  99. _ControllerManager.RemoveController<T>();
  100. }
  101. ///<summary>删除控制器</summary>
  102. public void RemoveController(BaseController controller)
  103. {
  104. _ControllerManager.RemoveController(controller);
  105. }
  106. ///<summary>删除所有控制器</summary>
  107. public void RemoveAllController()
  108. {
  109. _ControllerManager.RemoveAllController();
  110. }
  111. ///<summary>获取控制器</summary>
  112. public T GetController<T>() where T : BaseController
  113. {
  114. return _ControllerManager.GetController<T>();
  115. }
  116. #endregion
  117. public override void Dispose()
  118. {
  119. base.Dispose();
  120. _ControllerManager.Dispose();
  121. _ViewManager.Dispose();
  122. _ModelManager.Dispose();
  123. }
  124. }
  125. }