diff --git a/GFramework.Godot/coroutine/CoroutineExtensions.cs b/GFramework.Godot/coroutine/CoroutineExtensions.cs index 7ea08d4..1a0c112 100644 --- a/GFramework.Godot/coroutine/CoroutineExtensions.cs +++ b/GFramework.Godot/coroutine/CoroutineExtensions.cs @@ -4,11 +4,18 @@ using Godot; namespace GFramework.Godot.coroutine; +/// +/// 提供协程相关的扩展方法,用于简化协程的启动和管理。 +/// public static class CoroutineExtensions { /// - /// 启动协程的扩展方法 + /// 启动协程的扩展方法。 /// + /// 要启动的协程枚举器。 + /// 协程运行的时间段,默认为 Process。 + /// 协程的标签,可用于标识或分组协程。 + /// 返回协程的句柄,可用于后续操作(如停止协程)。 public static CoroutineHandle RunCoroutine( this IEnumerator coroutine, Segment segment = Segment.Process, @@ -18,8 +25,11 @@ public static class CoroutineExtensions } /// - /// 让协程在指定节点被销毁时自动取消 + /// 让协程在指定节点被销毁时自动取消。 /// + /// 要执行的协程枚举器。 + /// 用于检查是否存活的节点。 + /// 包装后的协程枚举器。 public static IEnumerator CancelWith( this IEnumerator coroutine, Node node) @@ -29,8 +39,12 @@ public static class CoroutineExtensions } /// - /// 让协程在任一节点被销毁时自动取消 + /// 让协程在任一节点被销毁时自动取消。 /// + /// 要执行的协程枚举器。 + /// 第一个用于检查是否存活的节点。 + /// 第二个用于检查是否存活的节点。 + /// 包装后的协程枚举器。 public static IEnumerator CancelWith( this IEnumerator coroutine, Node node1, @@ -43,11 +57,11 @@ public static class CoroutineExtensions } /// - /// 让协程在多个节点都被销毁时自动取消 + /// 让协程在多个节点都被销毁时自动取消。 /// - /// 要执行的协程枚举器 - /// 用于检查是否存活的节点数组 - /// 包装后的协程枚举器 + /// 要执行的协程枚举器。 + /// 用于检查是否存活的节点数组。 + /// 包装后的协程枚举器。 public static IEnumerator CancelWith( this IEnumerator coroutine, params Node[] nodes) @@ -58,12 +72,12 @@ public static class CoroutineExtensions } /// - /// 检查所有节点是否都处于存活状态 + /// 检查所有节点是否都处于存活状态。 /// - /// 要检查的节点数组 - /// 如果所有节点都存活则返回true,否则返回false + /// 要检查的节点数组。 + /// 如果所有节点都存活则返回 true,否则返回 false。 private static bool AllNodesAlive(Node[] nodes) { return nodes.All(Timing.IsNodeAlive); } -} \ No newline at end of file +} diff --git a/GFramework.Godot/coroutine/Timing.cs b/GFramework.Godot/coroutine/Timing.cs index 29fdf6c..4d6fbd8 100644 --- a/GFramework.Godot/coroutine/Timing.cs +++ b/GFramework.Godot/coroutine/Timing.cs @@ -28,34 +28,35 @@ public partial class Timing : Node private GodotTimeSource? _processTimeSource; private CoroutineScheduler? _processIgnorePauseScheduler; private GodotTimeSource? _processIgnorePauseTimeSource; + private const string NotInitializedMessage = "Timing not yet initialized (_Ready not executed)"; /// /// 获取Process调度器,如果未初始化则抛出异常 /// private CoroutineScheduler ProcessScheduler => _processScheduler ?? throw new InvalidOperationException( - "Timing not yet initialized (_Ready not executed)"); + NotInitializedMessage); /// /// 获取忽略暂停的Process调度器,如果未初始化则抛出异常 /// private CoroutineScheduler ProcessIgnorePauseScheduler => _processIgnorePauseScheduler ?? throw new InvalidOperationException( - "Timing not yet initialized (_Ready not executed)"); + NotInitializedMessage); /// /// 获取Physics调度器,如果未初始化则抛出异常 /// private CoroutineScheduler PhysicsScheduler => _physicsScheduler ?? throw new InvalidOperationException( - "Timing not yet initialized (_Ready not executed)"); + NotInitializedMessage); /// /// 获取Deferred调度器,如果未初始化则抛出异常 /// private CoroutineScheduler DeferredScheduler => _deferredScheduler ?? throw new InvalidOperationException( - "Timing not yet initialized (_Ready not executed)"); + NotInitializedMessage); #region 单例