Unity3D学习笔记09:协同
来源:互联网 发布:无法初始化网络效引擎 编辑:程序博客网 时间:2024/04/29 03:05
协同程序,即在主程序运行时同时开启另一段逻辑处理,来协同当前程序的执行。换句话说,开启协同程序就是开启一个线程。但在Unity3D中,协同程序并不是真正的线程,协同程序与线程差不多,也就是一条执行序列,拥有自己独立的栈,局部变量和指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。线程与协同程序的主要区别在于,一个具有多线程的程序可以同时运行几个线程,而协同程序却需要彼此协作地运行。就是说,一个具有多个协同程序的程序在任何时刻只能运行一 个协同程序,并且正在运行的协同程序只会在其显示地挂起时,它的执行才会暂停。
概念总是很枯燥的,我们用一个例子来学习协同的使用方法。新建项目,然后添加一个C#脚本,编辑脚本,代码如下:
using UnityEngine;using System.Collections;public class NewBehaviourScript : MonoBehaviour {// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () { if (Input.GetKeyDown(KeyCode.Space)) { //开启一个协同 StartCoroutine("fun"); } } IEnumerator fun() { print(Time.time); //等待两秒钟 yield return new WaitForSeconds(2.0f); print(Time.time); }}
代码很简单,只是在Update函数里,当按下空格键时,我们开启一个协同,注意开启协同时用的是StartCoroutine,然后把函数名作为参数,协同程序的返回类型只能为null、等待的帧数(frame)以及等待的时间。所以我们在协同函数里反回等待的时间两秒钟,然后执行下一个print函数,把脚本拖到Camera上,运行,在控制台输出两次打印的时间。
从图片中看出两个print函数两次打印时间差距大约两秒,所以我们可以用协同函数来实现等待执行某些动作。
好了,今天就说这么多,项目源码就不贴了。
- Unity3D学习笔记09:协同
- unity3d协同程序学习笔记
- Unity3d 协同程序学习和测试
- unity3d协同
- 推荐学习笔记-协同过滤
- fourinone学习笔记-协同权限
- Unity3D协同程序的学习理解与说明
- Unity3D学习记录——API IEnumerator(协同程序)
- 推荐学习笔记-协同过滤2
- ESL学习笔记----软硬件协同调试
- 【Hibernate学习笔记】与触发器协同工作
- 协同过滤 --- 数据挖掘学习笔记
- Lua学习笔记之协同程序
- Lua学习笔记-9.1章-协同程序
- lua学习笔记四--协同程序
- Caliburn.Micro学习笔记(五)----协同IResult
- Unity3d 协同 Photoshop 工作流
- Unity3D协同程序
- C++ STL算法系列6---copy函数
- Linux下一些简单命令的收集
- MD5信息摘要-文件的独一无二的“数字指纹”
- Windows 窗口分析
- 什么是大牛,我彻底服了,大牛讲解信号与系统
- Unity3D学习笔记09:协同
- 斐波纳契数列
- elipse搜索正则表达式
- mongoDB——通过客户端理解mongoDB体系结构
- Endnote无法编辑Range的解决方案参考
- 微信公众平台开发:基础篇(微信公众平台后台介绍)
- Oracle的USERENV(parameter)
- Quasi-Newton Method--LBFGS
- 动画animation中的fillAfter和fillBefore