diff --git a/GFramework.Ecs.Arch/ArchEcsModule.cs b/GFramework.Ecs.Arch/ArchEcsModule.cs index 7c93b4c..bbbdb94 100644 --- a/GFramework.Ecs.Arch/ArchEcsModule.cs +++ b/GFramework.Ecs.Arch/ArchEcsModule.cs @@ -8,9 +8,9 @@ namespace GFramework.Ecs.Arch; /// public sealed class ArchEcsModule : IArchEcsModule { - private readonly List> _systems = []; private IIocContainer? _container; private bool _isInitialized; + private IReadOnlyList> _systems = []; private World? _world; /// @@ -67,17 +67,13 @@ public sealed class ArchEcsModule : IArchEcsModule return; } - // 从容器获取所有适配器 - var adapters = _container.GetAll>(); - if (adapters.Count > 0) - { - _systems.AddRange(adapters); + // 从容器按优先级获取所有适配器 + _systems = _container.GetAllByPriority>(); - // 初始化所有系统(会调用 Arch 系统的 Initialize) - foreach (var system in _systems) - { - system.Initialize(); - } + // 初始化所有系统(会调用 Arch 系统的 Initialize) + foreach (var system in _systems) + { + system.Initialize(); } _isInitialized = true; @@ -99,7 +95,7 @@ public sealed class ArchEcsModule : IArchEcsModule system.Destroy(); } - _systems.Clear(); + _systems = []; // 销毁 World if (_world != null)