feat(core): 实现系统销毁机制

- 在 AbstractSystem 中添加 OnDestroy 抽象方法和 ISystem.Destroy 接口实现
- 在 Architecture 中增加 Destroy 方法以统一销毁所有已注册系统
- 更新 ISystem 接口注释及功能描述,明确支持系统销毁能力
- 修正 OnRegisterPatch 调用方式,确保架构注册补丁逻辑正确执行
- 完善 AbstractAudioManagerSystem 中的 OnDestroy 方法重写逻辑
- [no tag]
This commit is contained in:
GeWuYou 2025-12-17 13:00:33 +08:00
parent 506c26f945
commit 396cc589bc
4 changed files with 37 additions and 5 deletions

View File

@ -419,7 +419,7 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
/// <summary>
/// 系统销毁时清理资源
/// </summary>
protected void OnDestroy()
protected override void OnDestroy()
{
// 停止并清理淡入淡出动画
MusicFadeTween?.Kill();

View File

@ -35,7 +35,7 @@ public abstract class Architecture<T> : IArchitecture where T : Architecture<T>,
arch.Init();
// 执行注册的补丁逻辑
OnRegisterPatch?.Invoke(arch);
OnRegisterPatch(arch);
// 初始化所有已注册但尚未初始化的模型
foreach (var model in arch._mModels) model.Init();
@ -236,6 +236,19 @@ public abstract class Architecture<T> : IArchitecture where T : Architecture<T>,
_mTypeEventSystem.UnRegister(onEvent);
}
/// <summary>
/// 销毁架构,同时销毁所有已注册的系统
/// </summary>
public void Destroy()
{
// 销毁所有已注册的系统
foreach (var system in _mSystems)
{
system.Destroy();
}
_mSystems.Clear();
}
/// <summary>
/// 抽象初始化方法,由子类重写以进行自定义初始化操作

View File

@ -5,7 +5,7 @@ namespace GFramework.Core.system;
/// <summary>
/// 抽象系统基类,实现系统接口的基本功能
/// 提供架构关联和初始化机制
/// 提供架构关联、初始化和销毁机制
/// </summary>
public abstract class AbstractSystem : ISystem
{
@ -37,8 +37,21 @@ public abstract class AbstractSystem : ISystem
OnInit();
}
/// <summary>
/// 系统销毁方法,调用抽象销毁方法
/// </summary>
void ISystem.Destroy()
{
OnDestroy();
}
/// <summary>
/// 抽象初始化方法,由子类实现具体的初始化逻辑
/// </summary>
protected abstract void OnInit();
/// <summary>
/// 抽象销毁方法,由子类实现具体的资源清理逻辑
/// </summary>
protected virtual void OnDestroy() { }
}

View File

@ -1,4 +1,4 @@
using GFramework.Core.events;
using GFramework.Core.events;
using GFramework.Core.model;
using GFramework.Core.rule;
using GFramework.Core.utility;
@ -7,7 +7,7 @@ namespace GFramework.Core.system;
/// <summary>
/// 系统接口,定义了系统的基本行为和功能
/// 该接口继承了多个框架相关的接口,提供了系统初始化能力
/// 该接口继承了多个框架相关的接口,提供了系统初始化和销毁能力
/// </summary>
public interface ISystem : ICanSetArchitecture, ICanGetModel, ICanGetUtility,
ICanRegisterEvent, ICanSendEvent, ICanGetSystem
@ -17,4 +17,10 @@ public interface ISystem : ICanSetArchitecture, ICanGetModel, ICanGetUtility,
/// 在系统被创建后调用,用于执行系统的初始化逻辑
/// </summary>
void Init();
/// <summary>
/// 销毁系统
/// 在系统被销毁前调用,用于执行系统的资源清理逻辑
/// </summary>
void Destroy();
}