例子:一个队列.每个队列中元素,都要等待一定时间,用来处理完毕当前元素的事件.再让队列处理下一个元素的情况.直到队列清空.
可以使用协程的yield return new WaitUntil(() => IsBool);---这种条件写法来实现.
yield return null;
使协程在下一帧继续执行,但不进行任何等待。
yield return new WaitForEndOfFrame();
等待直到当前帧渲染结束。
yield return new WaitForFixedUpdate();
等待直到下一个固定更新周期,通常用于物理相关的操作。
yield return new WaitForSeconds(float seconds);
等待指定的时间(以秒为单位)。
yield return new WaitUntil(Func predicate);
以下是几个使用 WaitUntil 时常见的 Lambda 表达式(匿名函数)示例,涵盖了比较大小、布尔值以及逻辑与(&&)、或(||)、非(!)操作符:
比较大小:
等于某个值:
yield return new WaitUntil(() => myInteger == 10);
大于某个值:
yield return new WaitUntil(() => myFloat > 5.0f);
小于某个值:
yield return new WaitUntil(() => myDouble < 100.0);
布尔值:
等待布尔字段变为 true:
yield return new WaitUntil(() => isReady);
等待布尔字段变为 false:
yield return new WaitUntil(() => !isPaused);
逻辑与(&&):
两个条件都为真时继续:
yield return new WaitUntil(() => isReady && hasStarted);
逻辑或(||):
任意一个条件为真时继续:
yield return new WaitUntil(() => isReady || hasEnded);
逻辑非(!):
条件为假时继续:
yield return new WaitUntil(() => !isGameOver);
组合逻辑:
组合使用与、或、非:
yield return new WaitUntil(() => (isReady && !isPaused) || hasFinished);
这些示例展示了如何在 WaitUntil 中使用 Lambda 表达式来定义等待条件。在实际的 Unity 项目中,这些条件通常会与游戏逻辑、玩家输入、资源加载、动画状态等相结合,以便在满足特定条件时触发协程的下一步操作。