专栏/【Unity】Coroutines协程的等待条件用法.

【Unity】Coroutines协程的等待条件用法.

2024年10月15日 09:09--浏览 · --点赞 · --评论
粉丝:282文章:54

在做一些序列执行的任务的时候,发现Coroutines协程的WaitUntil很好用,特别是回合类战斗.善于处理一些队列内元素有执行时间的,序列处理事件

  • 例子:一个队列.每个队列中元素,都要等待一定时间,用来处理完毕当前元素的事件.再让队列处理下一个元素的情况.直到队列清空.

可以使用协程的yield return new WaitUntil(() => IsBool);---这种条件写法来实现.

协程的常用写法.

  1. yield return null;

    • 使协程在下一帧继续执行,但不进行任何等待。

  2. yield return new WaitForEndOfFrame();

    • 等待直到当前帧渲染结束。

  3. yield return new WaitForFixedUpdate();

    • 等待直到下一个固定更新周期,通常用于物理相关的操作。

  4. yield return new WaitForSeconds(float seconds);

    • 等待指定的时间(以秒为单位)。

  5. yield return new WaitUntil(Func predicate);

WaitUntil常用的Lambda 表达式

以下是几个使用 WaitUntil 时常见的 Lambda 表达式(匿名函数)示例,涵盖了比较大小、布尔值以及逻辑与(&&)、或(||)、非(!)操作符:

  1. 比较大小

    • 等于某个值:

      yield return new WaitUntil(() => myInteger == 10);

    • 大于某个值:

      yield return new WaitUntil(() => myFloat > 5.0f);

    • 小于某个值:

      yield return new WaitUntil(() => myDouble < 100.0);

  2. 布尔值

    • 等待布尔字段变为 true

      yield return new WaitUntil(() => isReady);

    • 等待布尔字段变为 false

      yield return new WaitUntil(() => !isPaused);

  3. 逻辑与(&&)

    • 两个条件都为真时继续:

      yield return new WaitUntil(() => isReady && hasStarted);

  4. 逻辑或(||)

    • 任意一个条件为真时继续:

      yield return new WaitUntil(() => isReady || hasEnded);

  5. 逻辑非(!)

    • 条件为假时继续:

      yield return new WaitUntil(() => !isGameOver);

  6. 组合逻辑

    • 组合使用与、或、非:

      yield return new WaitUntil(() => (isReady && !isPaused) || hasFinished);

      这些示例展示了如何在 WaitUntil 中使用 Lambda 表达式来定义等待条件。在实际的 Unity 项目中,这些条件通常会与游戏逻辑、玩家输入、资源加载、动画状态等相结合,以便在满足特定条件时触发协程的下一步操作。


投诉或建议