Unity StartCoroutine 协同程序

本文详细介绍了Unity中的协程Coroutine的工作原理和执行顺序。协程并非开启新线程,而是通过yield关键字实现任务间的切换。通过StartCoroutine启动后,协程在遇到yield时暂停,并在特定事件发生时恢复执行。文中列举了yield后面可以跟的表达式类型,如WaitForEndOfFrame、WaitForSeconds等,并强调了协程使用的若干规则,如返回值必须为IEnumerator,不能在Update或FixedUpdate中使用yield等。

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

协程是轻量级线程,开启协程不等同于开启线程,即不是开启一个新的流水线。通俗点讲,对于一堆任务,通过一个线程轮着对其中每个任务都执行一下。它的厉害之处在于,每运行到一个任务的时候,它都可以从这个任务上一次中断的地方开始运行。这种工作机制类似于操作系统的线程调度。

一、Unity 的 Coroutine 执行顺序

StartCoroutine 函数用于开始一个协同程序,但不是另外开启一个线程,协同程序与 StartCoroutine 函数在同一个线程之内;但是协同程序可以实现“线程切换”的效果,通过 yield 关键字,可以实现在某个事件发生时,线程的控制权回到协同程序。一个协同程序在执行过程中,会在使用了 yield 语句的位置暂停。yield 的返回值控制何时恢复协同程序向下执行。

StartCoroutine 函数在启动协同程序之后,将线程控制权转交给协同程序,协同程序在运行到 yield 语句处(会执行 yield 后的语句),交出控制权给外部线程并等待事件发生,当事件发生时,线程控制权再交回给协同程序。

示例 1:

void Start()
{
   print("Starting " +Time.time);----------------------------------------1
   StartCoroutine(WaitAndPrint(2));-------------------------------------2
   print("Done
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值