unity之协程
2015-09-09 19:36
459 查看
一协程与多线程的区别
多线程:例如:一个线程连接网络,另一个线程加载UI,表面看他俩是并行的,各干个的,实际上,在内部他俩是交替进行的
协程:它是一个线程,这个线程可以随时切换进行加载UI,又随时切换连接网络(类似于操作系统的中断)
协程的优点:不需要来回切换线程,高效啦
using UnityEngine;
using System.Collections;
public class MyCor : MonoBehaviour {
private int a = 0;
void Start () {
print("Start");
StartCoroutine("MyCoroutine");
print("StartLater");
}
void Update () {
print("update"+a);
print("updateMyCoroutineBefore");
//任何地方开启协程的时候,它会进入到协程方法,当遇到yield时,就返回到调用它的地方
//每一次Update执行完之后,它会搜索所有的协程,看yield语句所返回的值是否完成(yield之前的语句不看了),
//如果完成了,就执行yield之后的事情,执行完之后,在进入下一帧,也就是在执行update
//第一帧的时候,update不会搜索协程
StartCoroutine("MyCoroutine");
print("updateMyCoroutineAfter");
a++;
}
IEnumerator MyCoroutine() {
print("before");
yield return null;
print("after");
}
}
多线程:例如:一个线程连接网络,另一个线程加载UI,表面看他俩是并行的,各干个的,实际上,在内部他俩是交替进行的
协程:它是一个线程,这个线程可以随时切换进行加载UI,又随时切换连接网络(类似于操作系统的中断)
协程的优点:不需要来回切换线程,高效啦
using UnityEngine;
using System.Collections;
public class MyCor : MonoBehaviour {
private int a = 0;
void Start () {
print("Start");
StartCoroutine("MyCoroutine");
print("StartLater");
}
void Update () {
print("update"+a);
print("updateMyCoroutineBefore");
//任何地方开启协程的时候,它会进入到协程方法,当遇到yield时,就返回到调用它的地方
//每一次Update执行完之后,它会搜索所有的协程,看yield语句所返回的值是否完成(yield之前的语句不看了),
//如果完成了,就执行yield之后的事情,执行完之后,在进入下一帧,也就是在执行update
//第一帧的时候,update不会搜索协程
StartCoroutine("MyCoroutine");
print("updateMyCoroutineAfter");
a++;
}
IEnumerator MyCoroutine() {
print("before");
yield return null;
print("after");
}
}
相关文章推荐
- GUI - Web前端开发框架
- 评价ui设计作品好坏的八个标准(界面/交互设计研究)
- Lua协程(coroutine)程序运行分析
- Lua的协程(coroutine)简介
- 为Yahoo! UI Extensions Grid增加内置的可编辑器
- Cocos2d-x UI开发之文本类使用实例
- 在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
- UI Events 用户界面事件
- 基于jQuery UI CSS Framework开发Widget的经验
- jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
- jQuery UI设置固定日期选择特效代码分享
- jQuery UI的Dialog无法提交问题的解决方法
- jQuery ui实现动感的圆角渐变网站导航菜单效果代码
- 关于jQuery UI 使用心得及技巧
- jQuery ui 1.7更新小结
- 从零开始学习jQuery (十) jQueryUI常用功能实战
- jquery ui对话框实例代码
- jQuery UI AutoComplete 自动完成使用小记
- jQuery UI Autocomplete 体验分享
- Android UI使用HTML布局方法实例