From 59b3649155bcb034276501486f63eb2c689e523a Mon Sep 17 00:00:00 2001 From: ALEXTANG <574809918@qq.com> Date: Mon, 8 Apr 2024 15:37:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A1=86=E6=9E=B6=E8=BD=AE?= =?UTF-8?q?=E8=AF=A2=E9=80=BB=E8=BE=91=20,=E7=94=A8=E8=84=8F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9E=84=E5=BB=BAExecute=E6=95=B0=E7=BB=84=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化框架轮询逻辑 ,用脏数据构建Execute数组。 --- .../Modules/ModuleCore/ModuleImpSystem.cs | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/ModuleCore/ModuleImpSystem.cs b/UnityProject/Assets/TEngine/Runtime/Modules/ModuleCore/ModuleImpSystem.cs index f5ab8271..1010da38 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/ModuleCore/ModuleImpSystem.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/ModuleCore/ModuleImpSystem.cs @@ -19,6 +19,7 @@ namespace TEngine private static readonly GameFrameworkLinkedList _modules = new GameFrameworkLinkedList(); private static readonly GameFrameworkLinkedList _updateModules = new GameFrameworkLinkedList(); private static readonly List _updateExecuteList = new List(DesignModuleCount); + private static bool _isExecuteListDirty; /// /// 所有游戏框架模块轮询。 @@ -27,6 +28,12 @@ namespace TEngine /// 真实流逝时间,以秒为单位。 public static void Update(float elapseSeconds, float realElapseSeconds) { + if (_isExecuteListDirty) + { + _isExecuteListDirty = false; + BuildExecuteList(); + } + int executeCount = _updateExecuteList.Count; for (int i = 0; i < executeCount; i++) { @@ -149,12 +156,20 @@ namespace TEngine { _updateModules.AddLast(moduleImp); } - - _updateExecuteList.Clear(); - _updateExecuteList.AddRange(_updateModules); + + _isExecuteListDirty = true; } return moduleImp; } + + /// + /// 构造执行队列。 + /// + private static void BuildExecuteList() + { + _updateExecuteList.Clear(); + _updateExecuteList.AddRange(_updateModules); + } } } \ No newline at end of file