docs(coroutine): 更新协程扩展方法和定时器类的文档注释

- 为 CoroutineExtensions 类添加了总体功能描述
- 完善了 RunCoroutine 方法的参数和返回值文档注释
- 补充了 CancelWith 方法族的参数说明和返回值描述
- 优化了 AllNodesAlive 私有方法的文档注释格式
- 将 Timing 类中的重复错误消息提取为静态只读字段
- 统一了调度器属性的异常消息为常量引用
- [release ci]
This commit is contained in:
GeWuYou 2026-02-07 08:57:48 +08:00
parent bbb4636967
commit 177552a730
2 changed files with 30 additions and 15 deletions

View File

@ -4,11 +4,18 @@ using Godot;
namespace GFramework.Godot.coroutine;
/// <summary>
/// 提供协程相关的扩展方法,用于简化协程的启动和管理。
/// </summary>
public static class CoroutineExtensions
{
/// <summary>
/// 启动协程的扩展方法
/// 启动协程的扩展方法
/// </summary>
/// <param name="coroutine">要启动的协程枚举器。</param>
/// <param name="segment">协程运行的时间段,默认为 Process。</param>
/// <param name="tag">协程的标签,可用于标识或分组协程。</param>
/// <returns>返回协程的句柄,可用于后续操作(如停止协程)。</returns>
public static CoroutineHandle RunCoroutine(
this IEnumerator<IYieldInstruction> coroutine,
Segment segment = Segment.Process,
@ -18,8 +25,11 @@ public static class CoroutineExtensions
}
/// <summary>
/// 让协程在指定节点被销毁时自动取消
/// 让协程在指定节点被销毁时自动取消
/// </summary>
/// <param name="coroutine">要执行的协程枚举器。</param>
/// <param name="node">用于检查是否存活的节点。</param>
/// <returns>包装后的协程枚举器。</returns>
public static IEnumerator<IYieldInstruction> CancelWith(
this IEnumerator<IYieldInstruction> coroutine,
Node node)
@ -29,8 +39,12 @@ public static class CoroutineExtensions
}
/// <summary>
/// 让协程在任一节点被销毁时自动取消
/// 让协程在任一节点被销毁时自动取消
/// </summary>
/// <param name="coroutine">要执行的协程枚举器。</param>
/// <param name="node1">第一个用于检查是否存活的节点。</param>
/// <param name="node2">第二个用于检查是否存活的节点。</param>
/// <returns>包装后的协程枚举器。</returns>
public static IEnumerator<IYieldInstruction> CancelWith(
this IEnumerator<IYieldInstruction> coroutine,
Node node1,
@ -43,11 +57,11 @@ public static class CoroutineExtensions
}
/// <summary>
/// 让协程在多个节点都被销毁时自动取消
/// 让协程在多个节点都被销毁时自动取消
/// </summary>
/// <param name="coroutine">要执行的协程枚举器</param>
/// <param name="nodes">用于检查是否存活的节点数组</param>
/// <returns>包装后的协程枚举器</returns>
/// <param name="coroutine">要执行的协程枚举器</param>
/// <param name="nodes">用于检查是否存活的节点数组</param>
/// <returns>包装后的协程枚举器</returns>
public static IEnumerator<IYieldInstruction> CancelWith(
this IEnumerator<IYieldInstruction> coroutine,
params Node[] nodes)
@ -58,12 +72,12 @@ public static class CoroutineExtensions
}
/// <summary>
/// 检查所有节点是否都处于存活状态
/// 检查所有节点是否都处于存活状态
/// </summary>
/// <param name="nodes">要检查的节点数组</param>
/// <returns>如果所有节点都存活则返回true否则返回false</returns>
/// <param name="nodes">要检查的节点数组</param>
/// <returns>如果所有节点都存活则返回 true否则返回 false</returns>
private static bool AllNodesAlive(Node[] nodes)
{
return nodes.All(Timing.IsNodeAlive);
}
}
}

View File

@ -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)";
/// <summary>
/// 获取Process调度器如果未初始化则抛出异常
/// </summary>
private CoroutineScheduler ProcessScheduler =>
_processScheduler ?? throw new InvalidOperationException(
"Timing not yet initialized (_Ready not executed)");
NotInitializedMessage);
/// <summary>
/// 获取忽略暂停的Process调度器如果未初始化则抛出异常
/// </summary>
private CoroutineScheduler ProcessIgnorePauseScheduler =>
_processIgnorePauseScheduler ?? throw new InvalidOperationException(
"Timing not yet initialized (_Ready not executed)");
NotInitializedMessage);
/// <summary>
/// 获取Physics调度器如果未初始化则抛出异常
/// </summary>
private CoroutineScheduler PhysicsScheduler =>
_physicsScheduler ?? throw new InvalidOperationException(
"Timing not yet initialized (_Ready not executed)");
NotInitializedMessage);
/// <summary>
/// 获取Deferred调度器如果未初始化则抛出异常
/// </summary>
private CoroutineScheduler DeferredScheduler =>
_deferredScheduler ?? throw new InvalidOperationException(
"Timing not yet initialized (_Ready not executed)");
NotInitializedMessage);
#region