diff --git a/GFramework.Core/architecture/Architecture.cs b/GFramework.Core/architecture/Architecture.cs index d9e79ad..16d07b6 100644 --- a/GFramework.Core/architecture/Architecture.cs +++ b/GFramework.Core/architecture/Architecture.cs @@ -171,21 +171,31 @@ public abstract class Architecture : IArchitecture where T : Architecture, protected abstract void Init(); /// - /// 销毁架构,同时销毁所有已注册的系统 + /// 销毁架构并清理所有系统资源 /// + /// + /// 此函数负责有序地销毁架构中的所有系统组件,并发送相应的生命周期事件。 + /// 函数会确保只执行一次销毁操作,避免重复销毁。 + /// public void Destroy() { + // 检查当前阶段,如果已经处于销毁或已销毁状态则直接返回 if (CurrentPhase >= ArchitecturePhase.Destroying) return; + // 进入销毁阶段并发送销毁开始事件 EnterPhase(ArchitecturePhase.Destroying); - + SendEvent(new ArchitectureEvents.ArchitectureDestroyingEvent()); + + // 销毁所有系统组件并清空系统列表 foreach (var system in _allSystems) system.Destroy(); _allSystems.Clear(); + // 进入已销毁阶段并发送销毁完成事件 EnterPhase(ArchitecturePhase.Destroyed); + SendEvent(new ArchitectureEvents.ArchitectureDestroyedEvent()); } #endregion diff --git a/GFramework.Core/events/ArchitectureEvents.cs b/GFramework.Core/events/ArchitectureEvents.cs index 7526d38..d40b9fb 100644 --- a/GFramework.Core/events/ArchitectureEvents.cs +++ b/GFramework.Core/events/ArchitectureEvents.cs @@ -1,11 +1,25 @@ - -namespace GFramework.Core.events; +namespace GFramework.Core.events; +/// +/// 架构事件定义类,包含应用程序架构生命周期相关的事件结构体 +/// public static class ArchitectureEvents { /// - /// 架构初始化完成事件 - /// 在所有 Model / System Init 执行完毕后派发 + /// 架构生命周期准备就绪事件 + /// 当架构完成初始化并准备就绪时触发此事件 /// public readonly struct ArchitectureLifecycleReadyEvent; -} \ No newline at end of file + + /// + /// 架构销毁中事件 + /// 当架构开始销毁过程时触发此事件,表示系统正在关闭 + /// + public readonly struct ArchitectureDestroyingEvent; + + /// + /// 架构已销毁事件 + /// 当架构完全销毁完成后触发此事件,表示系统已关闭 + /// + public readonly struct ArchitectureDestroyedEvent; +}