【发布时间】:2021-02-16 16:20:48
【问题描述】:
我想实现与yield return new WaitUntil(() => Check()); 类似的东西,但增加了一个额外的功能。在满足Check() 条件后,它应该等待 x 秒检查每一帧,如果条件仍然成立。
这是我的实现:
private IEnumerator CheckCor(float waitTime)
{
bool checkFlag = true;
bool checkFlag2;
float whileTime;
while (checkFlag)
{
yield return new WaitUntil(() => Check());
checkFlag2 = true;
whileTime = waitTime;
while (whileTime > 0)
{
if (!Check())
{
checkFlag2 = false;
}
whileTime -= Time.deltaTime;
yield return null;
}
if (checkFlag2)
{
checkFlag = false;
}
}
}
Check() 在哪里
private bool Check();
我的实现运行良好,但似乎有点长。
有没有更短的方法来实现相同的行为?
(也使它通用将是一个加号,例如yield return WaitUntilForSeconds(Check(), 3f);,其中 Check() 是条件,3f 是时间检查每个帧的条件。我猜它可以使用CustomYieldInstruction 来完成,但是我不确定它是如何工作的。)
【问题讨论】:
-
也许我的问题不清楚或者我不明白。这如何帮助我在继续之前检查条件是否为真 x 秒?