[Unity-22] Coroutine协程浅析
1.概念解释
协程并非一个独立的线程。在Unity中。全部的语句都是在一个线程中运行的,也就是说。Unity是单线程的(详细的能够參见http://blog.csdn.net/alexander_xfl/article/details/41577625,这里面有对单线程的粗略解说)。
那么协程究竟是什么呢?
官方的定义是这种:
A coroutine is a function that is executed partially and, presuming suitable conditions are met, will be resumed at some point in the future until its work is done
.协程是一个分部运行。遇到条件(yield return 语句)会挂起。直到条件满足才会被唤醒继续运行后面的代码。
实际上协程在后台与Update的运行原理是一样的。每一帧都会去推断是否满足运行条件,并据此推断是否运行。
2.作用与使用方法
a>延时一段时间
<span style="font-family:SimSun;">IEnumerator Fun() {
yield returnnewWaitForSeconds(5.0F);
//do something
}</span>
后面的代码会在延时5秒之后运行
b>等待其它事件完毕
<span style="font-family:SimSun;">IEnumerator Do() {
print("1");
yield returnnewWaitForSeconds(2);
print("2");
}
IEnumerator Fun() {
print("3")
yield returnStartCoroutine(Do());
print("4");
}</span>
运行Fun后。输出顺序为:3 1 2 4
c>开启一个伪线程做其它工作
<span style="font-family:SimSun;">IEnumerator Do() {
print("1");
yield return new WaitForSeconds(2);
print("2");
}
void Fun() {
print("3");
StartCoroutine(Do());
print("4");
}</span>
运行Fun后,输出顺序为:3 1 4 2
d>等一帧
<span style="font-family:SimSun;">Ienumerator Do()
{
while(true)
{
print("happy");
yield return null;//等待这一帧结束
//yield return new WaitForFixedUpdate(); //等待全部脚本的fixedupdate运行完成
//yield return new WaitForEndOfFrame();
}
}</span>
e>等待下载完毕
<span style="font-family:SimSun;">yield return new WWWContinue()</span>
f>yield break
不再运行兴许语句
这里仅仅是对Unity协程进行了简单的介绍和基本使用方法分析,事实上网上已经有了一些对Unity协程更透彻的分析,比如http://dsqiu.iteye.com/blog/2029701?utm_source=tuicool
[Unity-22] Coroutine协程浅析的更多相关文章
- Unity中的协程(一)
这篇文章很不错的问题,推荐阅读英文原版: Introduction to Coroutines Scripting with Coroutines 这篇文章转自:http://blog.csdn. ...
- Unity C#笔记 协程
什么是协程 协同程序,在主程序运行的同时,开启另外一段逻辑处理,来协同当前程序的执行. 可能看了这段文字介绍还是有点模糊,其实可以用多线程来比较. 多线程 多线程,顾名思义,多条同时执行的线程. 最初 ...
- Coroutine(协程)模式与线程
概念 协程(Coroutine)这个概念最早是Melvin Conway在1963年提出的,是并发运算中的概念,指两个子过程通过相互协作完成某个任务,用它可以实现协作式多任务,协程(coroutine ...
- Kotlin Coroutine(协程): 二、初识协程
@ 目录 前言 一.初识协程 1.runBlocking: 阻塞协程 2.launch: 创建协程 3.Job 4.coroutineScope 5.协程取消 6.协程超时 7.async 并行任务 ...
- Kotlin Coroutine(协程): 一、样例
@ 目录 前言 一.直接上例子 1.延时任务. 2.异步任务 3.并行任务: 4.定时任务: 总结 前言 你还在用 Hanlder + Message? 或者 AsyncTask? 你还在用 Rxja ...
- 【Unity笔记】协程Coroutine的简单优化
一个最简单的协程,也至少需要2帧才能完成.第一帧走到yield return null停止,第二帧从此处接着执行完下面的操作.需求:如果缓存中存在某数据则直接使用,否则联网异步下载. private ...
- Coroutine 协程
https://en.wikipedia.org/wiki/Coroutine Coroutines are computer program components that generalize s ...
- Unity中的协程是什么?
什么是协程? 1.协程是一个分部执行,遇到条件(yield return 语句)会挂起,直到条件满足才会被唤醒继续执行后面的代码. 2.Unity在每一帧(Frame)都会去处理对象上的协程.Unit ...
- coroutine协程
如果你接触过lua这种小巧的脚本语言,你就会经常接触到一个叫做协程的神奇概念.大多数脚本语言都有对协程不同程度的支持.但是大多编译语言,如C/C++,根本就不知道这样的东西存在.当然也很多人研究如何在 ...
随机推荐
- 暑假集训 || 2-SAT
推荐论文:https://blog.csdn.net/zixiaqian/article/details/4492926 2-SAT问题是2判定性问题,给出n个集合,每个集合中有两个元素,两个元素之一 ...
- 核心动画中的几种layer
第10章其他有用的层 免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之 ...
- Django中的Cookie、Session、Token
Cookie : 指望着为了辨别用户身份.进行会话跟踪而存储在用户本地的数据(通常经过加密),是由服务端生成,发送给客户端浏览器,浏览器会将Cookie以key/value保存,下一请求同一网站是就发 ...
- img元素srcset属性浅析
img srcset 属性 img 元素的 srcset 属性用于浏览器根据宽.高和像素密度来加载相应的图片资源. 属性格式:图片地址 宽度描述w 像素密度描述x,多个资源之间用逗号分隔.例如: &l ...
- 如何用纯 CSS 创作一个渐变色动画边框
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/odpRKX 可交互视频教 ...
- mysql EXPLAIN Join Types 手册解释 及数据实操
第一部分:名称解释 文档地址 https://dev.mysql.com/doc/refman/5.7/en/explain-output.html EXPLAIN Join Types: The ...
- LeetCode(77) Combinations
题目 Given two integers n and k, return all possible combinations of k numbers out of 1 - n. For examp ...
- 杭电 2647 Reward (拓扑排序反着排)
Description Dandelion's uncle is a boss of a factory. As the spring festival is coming , he wants to ...
- 【01】Firebug 教程
Firebug 教程 什么是 Firebug? Firebug 是一个开源的web开发工具. 现在浏览器自带firebug了. 安装 Firebug Firebug下载地址: https: ...
- python多线程--线程同步
如果多个线程共同对某个数据修改,则可能出现不可预料的结果,为了保证数据的正确性,需要对多个线程进行同步. 使用Thread对象的Lock和Rlock可以实现简单的线程同步,这两个对象都有acquire ...