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