diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 4107d5b..1802de8 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -45,10 +45,7 @@ jobs: uses: github/codeql-action/init@v4 with: languages: csharp - build-mode: manual - # 手动构建项目 - - name: Build - run: dotnet build -c Release + build-mode: autobuild # 执行CodeQL代码分析 # 运行静态分析并生成结果报告 diff --git a/GFramework.Core/architecture/Architecture.cs b/GFramework.Core/architecture/Architecture.cs index ab5f89e..e045b81 100644 --- a/GFramework.Core/architecture/Architecture.cs +++ b/GFramework.Core/architecture/Architecture.cs @@ -85,10 +85,15 @@ public abstract class Architecture( private readonly TaskCompletionSource _readyTcs = new(TaskCreationOptions.RunContinuationsAsynchronously); + /// + /// 获取一个布尔值,指示当前架构是否处于就绪状态。 + /// 当前架构的阶段等于 ArchitecturePhase.Ready 时返回 true,否则返回 false。 + /// public bool IsReady => CurrentPhase == ArchitecturePhase.Ready; /// - /// 待初始化组件的去重集合 + /// 待初始化组件的去重集合。 + /// 用于存储需要初始化的组件实例,确保每个组件仅被初始化一次。 /// private readonly HashSet _pendingInitializableSet = []; diff --git a/GFramework.Core/coroutine/CoroutineScheduler.cs b/GFramework.Core/coroutine/CoroutineScheduler.cs index 41c3a58..83b4b9c 100644 --- a/GFramework.Core/coroutine/CoroutineScheduler.cs +++ b/GFramework.Core/coroutine/CoroutineScheduler.cs @@ -32,11 +32,18 @@ public sealed class CoroutineScheduler( /// public int ActiveCoroutineCount { get; private set; } + /// + /// 检查指定的协程句柄是否仍然存活 + /// + /// 要检查的协程句柄 + /// 如果协程仍然存活则返回 true,否则返回 false public bool IsCoroutineAlive(CoroutineHandle handle) { + // 检查元数据字典中是否包含指定的协程句柄 return _metadata.ContainsKey(handle); } + #region Run / Update /// diff --git a/GFramework.Core/coroutine/instructions/WaitForEvent.cs b/GFramework.Core/coroutine/instructions/WaitForEvent.cs index c84d244..1c15fab 100644 --- a/GFramework.Core/coroutine/instructions/WaitForEvent.cs +++ b/GFramework.Core/coroutine/instructions/WaitForEvent.cs @@ -15,7 +15,11 @@ using GFramework.Core.Abstractions.coroutine; using GFramework.Core.Abstractions.events; namespace GFramework.Core.coroutine.instructions; - +/// +/// WaitForEvent 类用于等待特定事件的发生,并提供事件数据和完成状态。 +/// 实现了 IYieldInstruction 和 IDisposable 接口,支持协程等待和资源释放。 +/// +/// 事件类型 public sealed class WaitForEvent : IYieldInstruction, IDisposable { private bool _disposed; @@ -23,60 +27,60 @@ public sealed class WaitForEvent : IYieldInstruction, IDisposable private IUnRegister? _unRegister; /// - /// 初始化等待事件的指令 + /// 初始化 WaitForEvent 实例,注册事件监听器以等待指定事件。 /// - /// 事件总线实例 + /// 事件总线实例,用于注册和监听事件。 + /// 当 eventBus 为 null 时抛出异常。 public WaitForEvent(IEventBus eventBus) { var eventBus1 = eventBus ?? throw new ArgumentNullException(nameof(eventBus)); - // 注册事件监听器 + // 注册事件监听器,当事件触发时调用 OnEventTriggered 方法 _unRegister = eventBus1.Register(OnEventTriggered); } /// - /// 获取接收到的事件数据 + /// 获取接收到的事件数据。仅在事件触发后可用。 /// public TEvent? EventData { get; private set; } /// - /// 释放资源 + /// 释放 WaitForEvent 实例占用的资源,包括注销事件监听器。 /// public void Dispose() { if (_disposed) return; - // 注销事件注册并清理资源 + // 注销事件注册并清理资源,防止内存泄漏 _unRegister?.UnRegister(); _unRegister = null; _disposed = true; } /// - /// 获取等待是否已完成 + /// 获取等待是否已完成。当事件触发后,此属性将返回 true。 /// public bool IsDone => _done; /// - /// 更新方法,用于处理时间更新逻辑 + /// 更新方法,用于处理时间更新逻辑。通常由协程系统调用。 /// - /// 时间增量 + /// 时间增量(秒),表示自上次更新以来经过的时间。 public void Update(double deltaTime) { - // 事件的完成由事件回调设置 - // 如果已完成,确保注销事件监听器 + // 如果事件已完成且事件监听器仍存在,则注销监听器以释放资源 if (!_done || _unRegister == null) return; _unRegister.UnRegister(); _unRegister = null; } /// - /// 事件触发时的回调处理 + /// 事件触发时的回调处理方法。设置事件数据并标记等待完成。 /// - /// 事件数据 + /// 触发事件时传递的数据。 private void OnEventTriggered(TEvent eventData) { EventData = eventData; _done = true; } -} \ No newline at end of file +} diff --git a/GFramework.Core/environment/EnvironmentBase.cs b/GFramework.Core/environment/EnvironmentBase.cs index 826037e..e4ed852 100644 --- a/GFramework.Core/environment/EnvironmentBase.cs +++ b/GFramework.Core/environment/EnvironmentBase.cs @@ -69,15 +69,19 @@ public abstract class EnvironmentBase : ContextAwareBase, IEnvironment Register(key, value); } + /// + /// 抽象方法,用于初始化操作。具体实现由派生类提供。 + /// public abstract void Initialize(); /// /// 注册键值对到环境值字典中 /// - /// 要注册的键 - /// 要注册的值 + /// 要注册的键,作为字典中的唯一标识符 + /// 要注册的值,与键关联的数据 protected void Register(string key, object value) { + // 将键值对添加到Values字典中 Values[key] = value; } } \ No newline at end of file diff --git a/GFramework.Core/ioc/IocContainer.cs b/GFramework.Core/ioc/IocContainer.cs index aecfb4e..3e1ef5e 100644 --- a/GFramework.Core/ioc/IocContainer.cs +++ b/GFramework.Core/ioc/IocContainer.cs @@ -53,12 +53,17 @@ public class IocContainer : ContextAwareBase, IIocContainer #region Register + /// + /// 当上下文准备就绪时调用此方法,用于初始化日志记录器。 + /// protected override void OnContextReady() { + // 创建日志记录器实例,并将其赋值给_logger字段 _logger = LoggerFactoryResolver.Provider.CreateLogger(nameof(IocContainer)); } + /// /// 注册单例 /// 一个类型只允许一个实例 diff --git a/GFramework.Core/utility/AbstractContextUtility.cs b/GFramework.Core/utility/AbstractContextUtility.cs index 5e64b6e..f694643 100644 --- a/GFramework.Core/utility/AbstractContextUtility.cs +++ b/GFramework.Core/utility/AbstractContextUtility.cs @@ -11,6 +11,9 @@ namespace GFramework.Core.utility; /// public abstract class AbstractContextUtility : ContextAwareBase, IContextUtility { + /// + /// 日志记录器 + /// protected ILogger Logger = null !; ///