mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-23 11:14:30 +08:00
feat(core): 实现系统销毁机制
- 在 AbstractSystem 中添加 OnDestroy 抽象方法和 ISystem.Destroy 接口实现 - 在 Architecture 中增加 Destroy 方法以统一销毁所有已注册系统 - 更新 ISystem 接口注释及功能描述,明确支持系统销毁能力 - 修正 OnRegisterPatch 调用方式,确保架构注册补丁逻辑正确执行 - 完善 AbstractAudioManagerSystem 中的 OnDestroy 方法重写逻辑 - [no tag]
This commit is contained in:
parent
506c26f945
commit
396cc589bc
@ -419,7 +419,7 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
||||
/// <summary>
|
||||
/// 系统销毁时清理资源
|
||||
/// </summary>
|
||||
protected void OnDestroy()
|
||||
protected override void OnDestroy()
|
||||
{
|
||||
// 停止并清理淡入淡出动画
|
||||
MusicFadeTween?.Kill();
|
||||
|
||||
@ -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>
|
||||
/// 抽象初始化方法,由子类重写以进行自定义初始化操作
|
||||
|
||||
@ -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() { }
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user