1、作用

协程的作用一共有两点:

  1. 延时执行代码。
  2. 在某项操作完后再执行代码。

就是控制代码在特性的时间执行。

2、协程和线程的区别

  1. 协程不是异步,不需要考虑同步和锁问题
  2. 线程避免了无意义的调度,提高了性能,但需要程序员自己承担调度责任。
  3. 协程无法多核同时进行。

3、C#中的IEnumerator(迭代器)

协程其实就是一个IEnumerator(迭代器),IEnumerator有两个方法和一个属性。
MoveNext():迭代到下一个元素
Reset():重置迭代
Current:返回当前集合中正迭代的一个元素

可枚举的接口 IEnumerable,
GetEnumerator():返回枚举器接口方法。

使用迭代器实现foreach功能

  1. static void Main(string[] args)
  2. {
  3. int[] arr = new int[5] { 12, 65, 749, 16, 49 };
  4. //foreach (int item in arr)
  5. //{
  6. // Console.WriteLine(item);
  7. //}
  8. IEnumerator e = arr.GetEnumerator(); //获取要迭代的对象
  9. while (e.MoveNext()) //一个一个的读取元素,读取完会返回false
  10. {
  11. Console.WriteLine(e.Current); //输出读取内容
  12. }
  13. Console.ReadKey();
  14. }

IEnumerator方法的用法

  1. void Start () {
  2. IEnumerator e = TestCoroutine();
  3. while (e.MoveNext()) //一直读取到有yield的语句才会停止执行下面的代码
  4. {
  5. Debug.Log(count++);
  6. Debug.Log(e.Current); //输出yield return里面的内容
  7. }
  8. }
  9. IEnumerator TestCoroutine()
  10. {
  11. Debug.Log("num1");
  12. Debug.Log("num1");
  13. Debug.Log("num1");
  14. yield return null;
  15. Debug.Log("num2");
  16. yield return 2;
  17. Debug.Log("num3");
  18. yield return new WaitForSeconds(1);
  19. Debug.Log("num4");
  20. yield break;
  21. }
  22. /*输出结果
  23. num1
  24. num1
  25. num1
  26. 1
  27. Null
  28. num2
  29. 2
  30. 2
  31. num3
  32. 3
  33. UnityEngine.WaitForSeconds
  34. num4
  35. */

4、Unity中的协程使用

推荐一篇博客CSDNhuang9012
写的超级好,由于比较长就不搬运了,可以直接去看

Unity---协程的简单使用的更多相关文章

  1. Unity协程(Coroutine)管理类——TaskManager工具分享

    博客分类: Unity3D插件学习,工具分享 源码分析   Unity协程(Coroutine)管理类——TaskManager工具分享 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处 ...

  2. unity协程coroutine浅析

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.序言 在unity的游戏开发中,对于异步操作,有一个避免不了的操作: 协程,以前一直理解的懵懵懂懂,最近认真充电了一下 ...

  3. 深入浅出!从语义角度分析隐藏在Unity协程背后的原理

    Unity的协程使用起来比较方便,但是由于其封装和隐藏了太多细节,使其看起来比较神秘.比如协程是否是真正的异步执行?协程与线程到底是什么关系?本文将从语义角度来分析隐藏在协程背后的原理,并使用C++来 ...

  4. Unity 协程使用指南

    0x00 前言 在使用Unity的过程中,对协程仅仅知道怎样使用,但并不知道协程的内部机理,对于自己不清楚的部分就像一块大石压力心里.让自己感觉到担忧和不适. 这篇文章一探到底,彻底揭开协程的面纱,让 ...

  5. Unity 协程运行时的监控和优化

    我是快乐的搬运工: http://gulu-dev.com/post/perf_assist/2016-12-20-unity-coroutine-optimizing#toc_0 --------- ...

  6. 聊一聊Unity协程背后的实现原理

    Unity开发不可避免的要用到协程(Coroutine),协程同步代码做异步任务的特性使程序员摆脱了曾经异步操作加回调的编码方式,使代码逻辑更加连贯易读.然而在惊讶于协程的好用与神奇的同时,因为不清楚 ...

  7. Unity协程(Coroutine)原理深入剖析

    Unity协程(Coroutine)原理深入剖析 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 其实协程并没有那么复杂,网上很多地方都说是多 ...

  8. Unity协程(Coroutine)原理深入剖析(转载)

    记得去年6月份刚开始实习的时候,当时要我写网络层的结构,用到了协程,当时有点懵,完全不知道Unity协程的执行机制是怎么样的,只是知道函数的返回值是IEnumerator类型,函数中使用yield r ...

  9. Unity协程Coroutine使用总结和一些坑

    原文摘自 Unity协程Coroutine使用总结和一些坑 MonoBehavior关于协程提供了下面几个接口: 可以使用函数或者函数名字符串来启动一个协程,同时可以用函数,函数名字符串,和Corou ...

  10. Unity协程(Coroutine)原理深入剖析再续

    Unity协程(Coroutine)原理深入剖析再续 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 前面已经介绍过对协程(Coroutine ...

随机推荐

  1. 转载:Java知多少(8)类库及其组织结构

    转载地址:http://www.cnblogs.com/Coda/p/4346151.html Java知多少(8)类库及其组织结构 Java 官方为开发者提供了很多功能强大的类,这些类被分别放在各个 ...

  2. python绘制圆和椭圆

    源自:https://blog.csdn.net/petermsh/article/details/78458585 1. 调用包函数绘制圆形Circle和椭圆Ellipse from matplot ...

  3. VIM命令总结【转】

    命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim ...

  4. ubuntn下 apt的用法和yum的比较(转)

    centos有yum安装软件,Ubuntu有apt工具. apt简单的来说,就是给Ubuntu安装软件的一种命令方式. 一.apt的相关文件 /etc/apt/sources.list 设置软件包的获 ...

  5. 《java编程思想》读后笔记:二,吸血鬼数字

    书本p75中一道读后练习思考题,题目如下: 吸血鬼数字是指位数为偶数的数字,可以有一对数字相乘得到,而这对数字各包含成绩的一半位数的数字,其中从最初的数字中选取的数字可以任意排序.一两个0结尾的数字是 ...

  6. Money Systems

    链接 分析:来看看背包九讲里面的一段话: 对于一个给定了背包容量.物品费用.物品间相互关系(分组.依赖等) 的背包问题,除了再给定每个物品的价值后求可得到的最大价值外,还可以得 到装满背包或将背包装至 ...

  7. 【C】字符串常量和字符数组

    此次博客是转载某位博主的文章,不过现在找不到了,所以先声明一下. 先贴一段代码: #include <stdio.h> int main(int argc, const char** ar ...

  8. redis设置密码和redis主从复制

    redis设置密码和redis主从复制 一.redis设置密码 1.Redis实用特性 安全性  主从复制(侦听器)事务处理 持久化机制 发布订阅消息 2.安全性:设置客户端连接后进行任何其他指定前需 ...

  9. BZOJ3165:[HEOI2013]Segment

    浅谈标记永久化:https://www.cnblogs.com/AKMer/p/10137227.html 题目传送门:https://www.lydsy.com/JudgeOnline/proble ...

  10. 关于Android的HAL的一些理解

    之前一直在学习基于Linux内核的一些字符型驱动的编程,对Linux内核驱动也算有了一些基本的了解吧,后来也做过一些基于Linux内核的驱动开发,像基于Android的CC1101高频模块的驱动开发, ...