1、作用

协程的作用一共有两点:

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

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

2、协程和线程的区别

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

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

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

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

使用迭代器实现foreach功能

static void Main(string[] args)
{
    int[] arr = new int[5] { 12, 65, 749, 16, 49 };

    //foreach (int item in arr)
    //{
    //    Console.WriteLine(item);
    //}

    IEnumerator e = arr.GetEnumerator(); //获取要迭代的对象
    while (e.MoveNext())  //一个一个的读取元素,读取完会返回false
    {
        Console.WriteLine(e.Current);  //输出读取内容
    }

    Console.ReadKey();
}

IEnumerator方法的用法

void Start () {
    IEnumerator e = TestCoroutine();
    while (e.MoveNext())  //一直读取到有yield的语句才会停止执行下面的代码
    {
        Debug.Log(count++);
        Debug.Log(e.Current);  //输出yield return里面的内容
    }
}
IEnumerator TestCoroutine()
{
    Debug.Log("num1");
    Debug.Log("num1");
    Debug.Log("num1");
    yield return null;
    Debug.Log("num2");
    yield return 2;
    Debug.Log("num3");
    yield return new WaitForSeconds(1);
    Debug.Log("num4");
    yield break;
}
/*输出结果
num1
num1
num1
1
Null
num2
2
2
num3
3
UnityEngine.WaitForSeconds
num4
*/

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. iOS 分享功能开发

    iOS 开发过程中可能会遇到需要进行第三方分享的需求,比如向QQ,微信,微博等分享 如下图 我们今天要讲到的方式是使用了一个第三方工具: http://www.sharesdk.cn 一,注册账号 去 ...

  2. Contiki 2.7 Makefile 文件(三)

    2.第二部分 这里的usage,targets,savetarget,savedefines都是伪目标. 和all不同,这些伪目标不会被执行,除非显式指定这些目标. 这里有两个目标savetarget ...

  3. 学习c语言的第14天

    #include <stdio.h> #include <string.h> struct student { int age; char sex; char name[100 ...

  4. awk添加文本到指定内容后一行

    一下操作会输入到文件末尾,,测试不全面,还不如使用echo解决呢... 1. 要添加的文本内容如下: 文件名:code_list html</>!@$%^^ fdsafds <> ...

  5. Hadoop- Wordcount程序原理及代码实现

    如果对Hadoop- MapReduce分布式计算框架原理还不熟悉的可以先了解一下它,因为本文的wordcount程序实现就是MapReduce分而治之最经典的一个范例. 单词计数(wordcount ...

  6. Java多线程编程核心 - 对象及变量的并发访问

    1.什么是“线程安全”与“非线程安全”? “非线程安全”会在多个线程对同一对象总的实例变量进行并发访问时发生,产生的后果是“脏读”,也就是取到的数据其实是被更改过的. “线程安全”是以获得的实例变量的 ...

  7. iOS开发 - 如何跳到系统设置里的各种设置界面

    在iOS开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者WIFI,提醒用户打开推送或者位置权限等.在iOS6之后,第三方应用需要跳转系统设置界面,需要在URL type中添加一个pre ...

  8. 集训Day1

    雅礼集训2017Day1的题 感觉上不可做实际上还挺简单的吧 T1 区间加 区间除法向下取整 查询区间和 区间最小值 大力上线段树,把除法标记推到底,加法标记就是按照线段树的来 先拿30 然后60的数 ...

  9. 一个节点rac+单节点dg网络配置(listener.ora与tnsnames.ora)

    环境说明:  实验环境是 一个节点的 rac + 单机dg    (主备全部用asm存储) tnsnames.ora  文件  (oracle用户) node 1 : node1-> pwd / ...

  10. Python3解leetcode Single Number

    问题描述: Given a non-empty array of integers, every element appears twice except for one. Find that sin ...