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);
}
}