From 625167430d459397cfc4b59d2380b5eb6b584a80 Mon Sep 17 00:00:00 2001 From: ALEXTANG <574809918@qq.com> Date: Tue, 6 Sep 2022 20:15:23 +0800 Subject: [PATCH] Update Update --- .../Runtime/Core/Base/Singleton/TSingleton.cs | 8 ---- .../Core/Base/Singleton/UnitySingleton.cs | 2 +- .../Core/Base/Singleton/UpdateInstance.cs | 37 +++++++++++-------- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/TSingleton.cs b/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/TSingleton.cs index 92669279..c8eeeb8b 100644 --- a/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/TSingleton.cs +++ b/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/TSingleton.cs @@ -20,13 +20,6 @@ namespace TEngine.Runtime void Release(); } - public interface IUnitySingleton - { - int GetPriority(); - - void OnUpdate(float elapseSeconds, float realElapseSeconds); - } - /// /// 单例管理器(统一化持久和释放) /// @@ -34,7 +27,6 @@ namespace TEngine.Runtime { private static List _iSingletonList; private static Dictionary _gameObjects; - private static List _unitySingletons; private static GameObject _root; public static GameObject Root { diff --git a/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/UnitySingleton.cs b/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/UnitySingleton.cs index ca4a2d05..c3b56745 100644 --- a/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/UnitySingleton.cs +++ b/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/UnitySingleton.cs @@ -6,7 +6,7 @@ namespace TEngine.Runtime /// 具备Unity完整生命周期的单例 /// /// - public class UnitySingleton : MonoBehaviour,IUnitySingleton where T : MonoBehaviour + public class UnitySingleton : MonoBehaviour,IUpdateSystem where T : MonoBehaviour { private static T _instance; diff --git a/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/UpdateInstance.cs b/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/UpdateInstance.cs index 71ca8ee1..9be1f95f 100644 --- a/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/UpdateInstance.cs +++ b/Assets/TEngine/Scripts/Runtime/Core/Base/Singleton/UpdateInstance.cs @@ -2,55 +2,62 @@ namespace TEngine.Runtime { + public interface IUpdateSystem + { + int GetPriority(); + + void OnUpdate(float elapseSeconds, float realElapseSeconds); + } + /// /// 实现UnitySingleton的OnUpdate /// internal class UpdateInstance : BehaviourSingleton { - public List UnitySingletons; + public List UpdateSystems; public UpdateInstance() { - UnitySingletons = new List(); + UpdateSystems = new List(); } - public void Retain(IUnitySingleton unitySingleton) + public void Retain(IUpdateSystem updateSystem) { - if (UnitySingletons.Contains(unitySingleton)) + if (UpdateSystems.Contains(updateSystem)) { - Log.Fatal($"Repeat Retain UnitySingleton{unitySingleton}"); + Log.Fatal($"Repeat Retain UnitySingleton{updateSystem}"); } else { - UnitySingletons.Add(unitySingleton); + UpdateSystems.Add(updateSystem); - UnitySingletons.Sort((x, y) => -x.GetPriority().CompareTo(y.GetPriority())); + UpdateSystems.Sort((x, y) => -x.GetPriority().CompareTo(y.GetPriority())); } } - public void Release(IUnitySingleton unitySingleton) + public void Release(IUpdateSystem updateSystem) { - if (UnitySingletons.Contains(unitySingleton)) + if (UpdateSystems.Contains(updateSystem)) { - UnitySingletons.Remove(unitySingleton); + UpdateSystems.Remove(updateSystem); } } public void ReleaseAll() { - var count = UnitySingletons.Count; - for (int i = 0; i < count; i++) + var count = UpdateSystems.Count; + for (int i = count-1; i >= 0; i--) { - Release(UnitySingletons[i]); + Release(UpdateSystems[i]); } } public override void Update() { - var count = UnitySingletons.Count; + var count = UpdateSystems.Count; for (int i = 0; i < count; i++) { - UnitySingletons[i].OnUpdate(UnityEngine.Time.deltaTime, UnityEngine.Time.unscaledDeltaTime); + UpdateSystems[i].OnUpdate(UnityEngine.Time.deltaTime, UnityEngine.Time.unscaledDeltaTime); } }