Unity协程yield return、yield break、WaitUntil等等区别和使用案例

本文详细介绍了Unity中yieldreturn,yieldbreak,WaitForSeconds,WaitUntil,WaitWhile等关键字以及UnityWebRequest、CustomYieldInstructions等在控制协程执行流程和网络请求方面的应用,展示了丰富的异步等待机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

yield returnyield break 是 C# 中迭代器方法的关键字,它们在 Unity 协程中被用来控制协程的执行流程。而 WaitForSecondsWaitUntilWaitWhile 是 Unity 内置的 Yield Instruction 类型,用于实现异步等待特定条件满足时继续执行协程。

1. yield return

  • yield return 语句在协程(IEnumerator)中使用,允许函数在执行过程中暂停并返回一个值给调用者。
  • 当Unity通过 StartCoroutine 调用包含 yield return 的函数时,该函数不会像普通函数那样立即执行到底,而是每遇到一次 yield return 就会暂停并返回当前的“结果”(可以是任意类型,包括各种 Yield Instruction),然后在下一帧或指定条件满足时继续执行后续代码。
  • 示例:yield return new WaitForSeconds(2f); 表示协程将暂停执行2秒后继续。

2. yield break

  • yield break; 在协程中表示终止整个迭代过程,相当于跳出整个协程。
  • yield break; 执行时,协程会立刻停止,不会执行任何剩余的 yield return 语句。

3. WaitForSeconds

  • WaitForSeconds(float seconds) 是一个 Yield Instruction 类型,当它作为 yield return 的返回值时,会让协程暂停指定秒数之后再继续执行。
  • 示例:
    IEnumerator MyCoroutine()
    {
         
         
        Debug.Log("Coroutine start");
        yield return new WaitForSeconds(3);
        Debug.Log("Coroutine resumes after 3 seconds");
    }
    
    void Start()
    {
         
         
        StartCoroutine(MyCoroutine());
    }
    

4. WaitUntil

  • WaitUntil(Func<bool> predicate) 接收一个布尔函数作为参数,在该函数返回 true 之前,协程会一直暂停执行。
  • 示例:
    bool isPlayerReady = false;
    
    IEnumerator WaitForPlayerReady()
    {
         
         
        while (!isPlayerReady)
        {
         
         
            yield 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极致人生-010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值