协程(Coroutine)原理分析

本文深入探讨Unity中的协程Coroutine,从协程的概念、标准写法、调用方法到YieldInstruction的使用,揭示其作为“伪多线程”技术的特性。通过示例解释了如何利用yield return和各种YieldInstruction实现协程的暂停与恢复,帮助读者理解并掌握协程在游戏开发中的应用。

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

前言

又是小半个月没更新了,感觉内心十分的愧疚,毕竟说过的话一般还是要去做到的,一般吧。。这次闲的没事,就来扒一扒Unity一个你经常会在别人的代码里见到,但可能从来都没有用过的语法,没错,它就是传说中的————协程(Coroutine)。

什么是协程?

首先来看一下Unity官方文档的定义:

A coroutine is a function that can suspend its execution (yield) until the given given YieldInstruction finishes.

嗯,大概翻译一下就是: 协程是一种可以暂停执行过程的函数,它可以中断当前的执行过程直到下一个Yield指令达成。如果要做个类比的话,你可以把它理解为类似于CPU在多个进程间切换,从而达到多个进程同时执行的效果。学过计算机组成原理的都知道,当CPU在多个进程间切换时,那些后台程序就会处于这种暂停用英文的Suspend或许更恰当)的状态,所以早年的电脑即使用一个CPU也可以同时处理多个进程任务,这是一种“伪多线程”的技术。记住,这里要划一个重点,协程是一种“伪多线程”,明白这一点你理解协程会轻松很多。

协程函数的标准写法

孔乙己有一句著名的话很多人估计都学过————“你晓得茴字有八种写法么?”庆幸的是协程只有一种写法,但是不要因为它被称作“函数”就放松警惕。相反,把它和函数说成是两家或许更恰当。下面是一段标准的Coroutine代码:

IEnumerator WaitAndPrint(float waitTime)
{
    while (true)
    {
        yield return new WaitForSeconds(waitTime);
        print(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值