协同程序原理

本文深入探讨Unity中的协程机制,解释协程的本质是能够暂停和恢复的迭代器方法,以及协程调度器如何管理协程执行。通过实例展示了如何手动执行和使用Unity的协程调度器运行协程,强调了StartCoroutine在遵循Unity协程规则中的作用。

1、协程的本质

协程可以分为两部分:(1)协程函数本体(分步);(2)协程调度器(分时)

协程本体就是一个能够中间暂停返回的函数

协程调度器是Unity内部实现的,会在对应的时机帮助我们继续执行协程函数

Unity只实现了协程调度部分,协程的本体本质上就是一个C#的迭代器方法

2、协程本体是迭代器方法的体现

(1)协程函数本体

如果我们不通过开启协程方法StartCorcutine()执行协程,那么Unity的协程调度器是不会帮助我们管理协程函数的(StartCorcutine执行的协程会遵循Unity的协程调度规则,即不同的返回值在不同的时刻执行),但是我们可以自己执行迭代器函数内容

IEnumerator Test() {
    print("第1次执行");
    yield return 1;
    print("第2次执行");
    yield return 2;
    print("第3次执行");
    yield return 3;
    print("第4次执行");
    yield return new TestClass(10);
}

// 直接执行Test()是不会有任何结果的
IEnumerator ie = Test();
ie.MoveNext();            // 打印"第1次执行"
print(ie.Current());      // 打印第一次yield return的返回值 1
......
// 最后一次执行时
TestClass tc = ie.Current as TestClass;
 
// MoveNext()的返回值代表是否到了结尾
// 当Test()执行完后,MoveNext()会返回一个false,因此可以通过while循环遍历
while(ie.MoveNext()){
    print(ie.Current());
}

(2)协程调度器

继承MonoBehavior后开启协程,相当于是把一个协程函数(迭代器)放入Unity的协程调度器中帮助我们管理进行执行,具体的 yield return  后面的规则也是Unity定义的一些规则

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值