GeWuYou f24ec656e6 refactor(coroutine): 将协程相关接口从Game模块迁移到Core模块
- 重命名命名空间从GFramework.Game.Abstractions.coroutine到GFramework.Core.Abstractions.coroutine
- 更新ICoroutineContext.cs、ICoroutineHandle.cs、ICoroutineScheduler.cs、
  ICoroutineScope.cs、ICoroutineSystem.cs、IYieldInstruction.cs的命名空间
- 更新测试覆盖率计划文档,添加协程模块测试计划
- 新增协程模块测试计划,包含15个源文件,计划91个测试用例
- 添加CoroutineHandleTests.cs等7个协程相关测试文件的计划
2026-01-21 09:21:08 +08:00

33 lines
848 B
C#

using GFramework.Core.Abstractions.coroutine;
namespace GFramework.Core.coroutine;
/// <summary>
/// 等待直到指定条件满足的协程等待指令
/// </summary>
/// <param name="predicate">用于判断等待是否完成的条件函数</param>
public class WaitUntil(Func<bool> predicate) : IYieldInstruction
{
/// <summary>
/// 获取当前等待指令是否已完成
/// </summary>
public bool IsDone { get; private set; }
/// <summary>
/// 更新等待状态
/// </summary>
/// <param name="deltaTime">时间增量</param>
public void Update(float deltaTime)
{
// 只有在未完成状态下才检查条件
if (!IsDone) IsDone = predicate();
}
/// <summary>
/// 重置等待指令状态
/// </summary>
public void Reset()
{
IsDone = false;
}
}