feat(core): 完善架构销毁逻辑并新增生命周期事件

- 优化 `Architecture.Destroy()` 方法,确保系统资源被正确清理
- 添加销毁阶段的状态检查,防止重复销毁
- 引入 `ArchitectureDestroyingEvent` 和 `ArchitectureDestroyedEvent` 事件
- 补充架构事件类的注释说明,提升代码可读性
This commit is contained in:
GwWuYou 2025-12-21 11:58:44 +08:00
parent 8df2b071cf
commit 383d934e02
2 changed files with 31 additions and 7 deletions

View File

@ -171,21 +171,31 @@ public abstract class Architecture<T> : IArchitecture where T : Architecture<T>,
protected abstract void Init();
/// <summary>
/// 销毁架构,同时销毁所有已注册的系统
/// 销毁架构并清理所有系统资源
/// </summary>
/// <remarks>
/// 此函数负责有序地销毁架构中的所有系统组件,并发送相应的生命周期事件。
/// 函数会确保只执行一次销毁操作,避免重复销毁。
/// </remarks>
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

View File

@ -1,11 +1,25 @@

namespace GFramework.Core.events;
namespace GFramework.Core.events;
/// <summary>
/// 架构事件定义类,包含应用程序架构生命周期相关的事件结构体
/// </summary>
public static class ArchitectureEvents
{
/// <summary>
/// 架构初始化完成事件
/// 在所有 Model / System Init 执行完毕后派发
/// 架构生命周期准备就绪事件
/// 当架构完成初始化并准备就绪时触发此事件
/// </summary>
public readonly struct ArchitectureLifecycleReadyEvent;
}
/// <summary>
/// 架构销毁中事件
/// 当架构开始销毁过程时触发此事件,表示系统正在关闭
/// </summary>
public readonly struct ArchitectureDestroyingEvent;
/// <summary>
/// 架构已销毁事件
/// 当架构完全销毁完成后触发此事件,表示系统已关闭
/// </summary>
public readonly struct ArchitectureDestroyedEvent;
}