美文网首页
Unity协程:协同程序

Unity协程:协同程序

作者: 困卡 | 来源:发表于2017-03-20 12:01 被阅读0次

协程是什么?

协程是一个分部执行,遇到条件(yield return 语句)会挂起,直到条件满足才会被唤醒继续执行后面的代码。
通俗点说:程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。

协程的运行

协程不是线程,也不是异步执行的。协程和 MonoBehaviour 的 Update函数一样也是在MainThread中执行的。
协同程序可以和主程序并行运行,和多线程有点类似。

协程的作用

1、延时(等待)一段时间执行代码;
2、等某个操作完成之后再执行后面的代码。
总结起来就是一句话:控制代码在特定的时机执行。

Paste_Image.png

协程的定义

在C#中,协程返回值必须是Ienumerator,yield要用yield return 来替代,并且启动协同程序用StartCoroutine 函数
yield 和 IEnumerator都是C#的东西,他们是一个关键字,StartCoroutine是枚举类的接口。

Paste_Image.png
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading;

public class xiecheng : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(One());//开启协成
        for (int i = 0; i < 200; i++)//循环A
        {
            Debug.Log("————" + i);
            Thread.Sleep(10);
        }
    }
    IEnumerator One()
    {
        for (int i = 0; i < 100; i++)//循环B
        {
            Debug.Log("***********" + i);
        }
        yield return new WaitForSeconds(1f);//协程1
        for (int i = 0; i < 100; i++)//循环C
        {
            Debug.Log("$$$$$$$$$$" + i);
            yield return null;//协程1
        }
    }
    void Update()
    {
        Debug.Log("upda");
    }
    void LateUpadate()
    {
        Debug.Log("------LateUpadate");
    }
}

运行结果:先执行循环B,然后执行循环A,然后执行update()和lateUpdate()的方法,等待1S之后,在updat()和lateupda()之间执行循环C的输出。

相关文章

  • Unity基础 -- 协同程序

    ****什么是协同程序?****协同程序又称协程。协程是一个分部执行,遇到条件(yield return 语句)会...

  • Unity协程:协同程序

    协程是什么? 协程是一个分部执行,遇到条件(yield return 语句)会挂起,直到条件满足才会被唤醒继续执行...

  • kotlin中的协程(Couroutines)

    一、什么是协程 官方给的解释:一种轻量级的线程。普遍的解释:协程就是协同程序,而kotlin协程就是基于java ...

  • XLua里使用协程

    在XLua里如何使用协程?有两种方式 使用Unity协程要想通过unity的StartCoroutine使用协程,...

  • [其他] 初学协程

    1. 什么是协程 协程是协同程序(Coroutine)的简称(co前缀表示合作,routine即为程序)。具体来说...

  • Unity 协程

    unity 里面的协程流程 开始协程 StartCoroutine("DoSomething"); 执行到 yie...

  • Unity3D 中的协同程序Coroutine

    今天咱就说说协同程序coroutine。 什么是协同程序 先说说啥是协程:它的表现形式非常像线程,对线程有过接触的...

  • C#协程

    Unity中协程的执行原理 UnityGems.com给出了协程的定义: A coroutine is a fun...

  • (技术)Python 3 -- 异步IO: asyncio

    先上代码 Coroutine 翻译一下:协同程序 ,简意为协程,又称微线程 @asyncio.coroutin...

  • unity协程

    今天在网上看见一个人的博客,发现对unity Coroutine有深入的了解分享一下 原文出处 unity Mo...

网友评论

      本文标题:Unity协程:协同程序

      本文链接:https://www.haomeiwen.com/subject/fopbnttx.html