From a444581ec7eab51f7065665632738b84031c47b2 Mon Sep 17 00:00:00 2001 From: GwWuYou <95328647+GeWuYou@users.noreply.github.com> Date: Wed, 17 Dec 2025 21:07:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(core):=20=E6=B7=BB=E5=8A=A0=E6=9E=B6?= =?UTF-8?q?=E6=9E=84=E5=88=9D=E5=A7=8B=E5=8C=96=E5=AE=8C=E6=88=90=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在架构初始化完成后发送 ArchitectureInitializedEvent 事件 - 新增 ArchitectureEvents 类用于定义架构相关事件 - 修改 AbstractResourceFactorySystem 在架构初始化完成后执行资源预加载 - 移除 AbstractArchitecture 中的多余空行 --- .../architecture/AbstractArchitecture.cs | 1 - .../system/AbstractResourceFactorySystem.cs | 12 +++++++++--- GFramework.Core/architecture/Architecture.cs | 3 ++- GFramework.Core/events/ArchitectureEvents.cs | 11 +++++++++++ 4 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 GFramework.Core/events/ArchitectureEvents.cs diff --git a/GFramework.Core.Godot/architecture/AbstractArchitecture.cs b/GFramework.Core.Godot/architecture/AbstractArchitecture.cs index 4022811..dd0c576 100644 --- a/GFramework.Core.Godot/architecture/AbstractArchitecture.cs +++ b/GFramework.Core.Godot/architecture/AbstractArchitecture.cs @@ -10,7 +10,6 @@ namespace GFramework.Core.Godot.architecture; public abstract class AbstractArchitecture : Architecture where T : Architecture, new() { private const string ArchitectureName = "__GFrameworkArchitectureAnchor"; - /// /// 初始化架构,按顺序注册模型、系统和工具 /// diff --git a/GFramework.Core.Godot/system/AbstractResourceFactorySystem.cs b/GFramework.Core.Godot/system/AbstractResourceFactorySystem.cs index ffd2d74..a3a1b69 100644 --- a/GFramework.Core.Godot/system/AbstractResourceFactorySystem.cs +++ b/GFramework.Core.Godot/system/AbstractResourceFactorySystem.cs @@ -1,4 +1,5 @@ -using GFramework.Core.extensions; +using GFramework.Core.events; +using GFramework.Core.extensions; using GFramework.Core.system; using Godot; @@ -25,9 +26,14 @@ public abstract class AbstractResourceFactorySystem : AbstractSystem, IResourceF _registry = new ResourceFactory.Registry(); _resourceLoadSystem = this.GetSystem(); _assetCatalogSystem = this.GetSystem(); + // 注册资源 RegisterResources(); - // 执行预加载 - _registry.PreloadAll(); + // 监听架构初始化事件 + this.RegisterEvent(_ => + { + // 预加载所有资源 + _registry.PreloadAll(); + }); } /// diff --git a/GFramework.Core/architecture/Architecture.cs b/GFramework.Core/architecture/Architecture.cs index c1d81c0..4357437 100644 --- a/GFramework.Core/architecture/Architecture.cs +++ b/GFramework.Core/architecture/Architecture.cs @@ -46,7 +46,8 @@ public abstract class Architecture : IArchitecture where T : Architecture, foreach (var system in arch._mSystems) system.Init(); arch._mSystems.Clear(); - + // 发送架构初始化完成事件 + arch.SendEvent(new ArchitectureEvents.ArchitectureInitializedEvent()); arch._mInited = true; return arch; }, LazyThreadSafetyMode.ExecutionAndPublication); diff --git a/GFramework.Core/events/ArchitectureEvents.cs b/GFramework.Core/events/ArchitectureEvents.cs new file mode 100644 index 0000000..53f0070 --- /dev/null +++ b/GFramework.Core/events/ArchitectureEvents.cs @@ -0,0 +1,11 @@ + +namespace GFramework.Core.events; + +public static class ArchitectureEvents +{ + /// + /// 架构初始化完成事件 + /// 在所有 Model / System Init 执行完毕后派发 + /// + public readonly struct ArchitectureInitializedEvent { } +} \ No newline at end of file