当前位置:   article > 正文

协同程序原理_不使用unity自带的协程协调器开启协程通过迭代器函数实现每隔一秒执行函数的一部

不使用unity自带的协程协调器开启协程通过迭代器函数实现每隔一秒执行函数的一部

1、协程的本质

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

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

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

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

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

(1)协程函数本体

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

  1. IEnumerator Test() {
  2. print("第1次执行");
  3. yield return 1;
  4. print("第2次执行");
  5. yield return 2;
  6. print("第3次执行");
  7. yield return 3;
  8. print("第4次执行");
  9. yield return new TestClass(10);
  10. }
  11. // 直接执行Test()是不会有任何结果的
  12. IEnumerator ie = Test();
  13. ie.MoveNext(); // 打印"第1次执行"
  14. print(ie.Current()); // 打印第一次yield return的返回值 1
  15. ......
  16. // 最后一次执行时
  17. TestClass tc = ie.Current as TestClass;
  18. // MoveNext()的返回值代表是否到了结尾
  19. // 当Test()执行完后,MoveNext()会返回一个false,因此可以通过while循环遍历
  20. while(ie.MoveNext()){
  21. print(ie.Current());
  22. }

(2)协程调度器

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/126757?site
推荐阅读
相关标签
  

闽ICP备14008679号