StaticUpdater.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #if !COMBAT_SERVER
  2. using System;
  3. using System.Collections;
  4. using Fort23.Core;
  5. using Fort23.UTool;
  6. using UnityEngine;
  7. public class StaticUpdater : Entity
  8. {
  9. public static StaticUpdater Instance;
  10. public delegate void UpdateCallBack();
  11. private BetterList<UpdateCallBack> m_renderCallBack = new BetterList<UpdateCallBack>();
  12. private BetterList<UpdateCallBack> m_lateCallBack = new BetterList<UpdateCallBack>();
  13. private GameObject g;
  14. [CustomMethod(CustomMethodType.Awake)]
  15. public void Awake()
  16. {
  17. if (Instance != null)
  18. {
  19. LogTool.Error("不能添加重复的单例");
  20. return;
  21. }
  22. g = new GameObject();
  23. GameObject.DontDestroyOnLoad(g);
  24. Instance = this;
  25. }
  26. [CustomMethod(CustomMethodType.Update)]
  27. public void Update()
  28. {
  29. try
  30. {
  31. if (m_renderCallBack.size > 0)
  32. {
  33. UpdateCallBack[] callBack = m_renderCallBack.ToArray();
  34. for (int i = 0; i < callBack.Length; i++)
  35. {
  36. try
  37. {
  38. callBack[i]?.Invoke();
  39. }
  40. catch (Exception e)
  41. {
  42. Debug.LogError(e);
  43. }
  44. }
  45. }
  46. }
  47. catch (Exception e)
  48. {
  49. Debug.LogError(e);
  50. }
  51. }
  52. [CustomMethod(CustomMethodType.LateUpdate)]
  53. public void LateUpdate()
  54. {
  55. try
  56. {
  57. if (m_lateCallBack.size > 0)
  58. {
  59. UpdateCallBack[] callBack = m_lateCallBack.ToArray();
  60. for (int i = 0; i < callBack.Length; i++)
  61. {
  62. callBack[i]();
  63. }
  64. }
  65. }
  66. catch (Exception e)
  67. {
  68. Debug.LogError(e);
  69. }
  70. }
  71. public override void Dispose()
  72. {
  73. m_renderCallBack.Clear();
  74. m_lateCallBack.Clear();
  75. }
  76. public void AddRenderUpdateCallBack(UpdateCallBack callBack)
  77. {
  78. if (!m_renderCallBack.Contains(callBack))
  79. {
  80. m_renderCallBack.Add(callBack);
  81. }
  82. }
  83. public void RemoveRenderUpdateCallBack(UpdateCallBack callBack)
  84. {
  85. m_renderCallBack.Remove(callBack);
  86. }
  87. public void AddLateUpdateCallBack(UpdateCallBack callBack)
  88. {
  89. m_lateCallBack.Add(callBack);
  90. }
  91. public void RemoveLateUpdateCallBack(UpdateCallBack callBack)
  92. {
  93. m_lateCallBack.Remove(callBack);
  94. }
  95. public void StartCoroutine(IEnumerator enumerator)
  96. {
  97. }
  98. public void RemoveFixedUpdateCallBack(Action updateRequestState)
  99. {
  100. }
  101. }
  102. #endif