Unity Coroutine 简单理解

本文详细介绍了Unity中协程的工作原理及应用。通过示例代码解释了如何使用yield return实现延时操作,并展示了如何利用协程模拟固定更新逻辑。

协程的定义:

IEnumerator MyCoroutine () {
    yield return new WaitForSeconds(1.0f);
    doSomething();
}

启动协程:

StartCoroutine(MyCoroutine ())

解析:

协程一旦启动后,就像 Update 函数一样,每帧执行

yield return 的作用就是返回 IEnumerator 对象,当该 IEnumerator 对象 (在上面的示例中就是 new WaitForSeconds(1.0f) )的 MoveNext 返回 false 时,即该 IEnumerator 迭代到最后一个元素,才会执行后面的 doSomething 语句

总结一下,实际上就是协程启动后,判断 yield return 是否返回 false ,如果不是则 MoveNext 下一帧再判断,直到 return false 则执行后面的语句

在 update 中启动协程

void Update ()
{
    StartCoroutine(MyCoroutine ())
}

在每帧 Time.deltaTime 都开启一个 MyCoroutine 协程,每个协程延迟1秒后执行,换句话说 MyCoroutine 函数将在1秒后按 Time.deltaTime 的间隔时间陆续执行,在这里,与调用普通函数相比效果仅仅是延迟1秒后开始执行

使用协程模拟一个 FixedUpdate

IEnumerator MyUpdate() {
    while(true)
    {
        yield return new WaitForSeconds(0.02f);
        doSomething();
    }
}

void Start()
{
    StartCoroutine(MyUpdate());
}
每间隔 0.02 秒执行一次 doSomething 函数


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值