我眼中的协同(unity IEnumerator )
来源:互联网 发布:excel 宏编程的语法 编辑:程序博客网 时间:2024/05/16 19:42
怎么理解协同?
在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行。可以用来控制运动、序列以及对象的行为。
大家做程序员,应该都能明白什么是主线程序,按照上面的说法,可以知道协同并非线程。
一般什么地方能使用到协同?
想要实现一些延时等待,操作完成之后在执行后面的代码的时候都可以使用协同进行实现,比如说使用www加载资源,等到加载完成在把图片拿出来使用,比如打开某个界面后两秒钟播放一个特效。
如何使用
直接上例子:
void Main()
{
StartCoroutine(WaitForOneSec());//调用协同必须使用StartCoroutine
}
IEnumerator WaitForOneSec()//返回值必须是IEnumerator
{
yield return new WaitForSeconds(1);//必须有yield return来返回,目前这句的意思是等待一秒终止后执行后面一句话。
Debug.LogError("wait over");
}
返回值类型
yield return null相当于挂起一帧,什么意思呢?如果一个协同里面有一句yield return null执行顺序为:1.调用协同函数-->2.直接进入协同函数内部执行代码---->3.执行到yield return null挂起 ----->4.执行Update-->5.执行LastUpdate--->6.执行下一帧的Update----->7.执行协同内部挂起部分代码的后续部分。
WaitForEndOfFrame等一帧
WaitForFixedUpdate等fixedupdate执行之后
WaitForSeconds等几秒
WWW等www加载结果回来
Another coroutine其他的协同
break 直接返回后面不执行
遇到的坑
做程序员大家都知道方法返回值可以接收进行使用,也可以不接收只执行方法体,但是,在协同中,这个返回值是一个迭代器,一般这个返回值不会进行使用,而是交给程序自己进行迭代查询。
必须使用StartCoroutine调用协同,不然不能正常执行。
如果有遇到其他坑的可以给我留言 ,我会整理加上哦。希望对大家有帮助。
- 我眼中的协同(unity IEnumerator )
- unity IEnumerator 协同程序
- unity ienumerator
- IEnumerator协同程序
- Unity中协程(IEnumerator)的使用方法介绍
- 我眼中的指针(转)
- 我眼中的希特勒(现代诗)
- (转帖)我眼中的C#3.0
- 我眼中的排队(一)
- 我眼中的排队(一)
- 我眼中的排队(二)
- 我眼中的排队(二)
- 我眼中的世界(一)
- 我眼中的排队(一)
- 我眼中的排队(二)
- 我眼中的排队(三)
- 我眼中的hadop(5-7)
- 我眼中的设计模式(一)
- Java 8系列之重新认识HashMap
- 远程访问(云)服务器上ipython设置
- android5.x怎么修改屏幕亮度
- Rxjava+Retrofit+OKHttp框架开发时遇到的坑(有遇到就更新)
- arcgis10.3操作利用等值线统计平均值
- 我眼中的协同(unity IEnumerator )
- Maven 环境变量设置
- Python自动发送邮件并添加附件的主程序
- java中三种获取class类的方法
- DownloadManager--Android自带的下载工具
- PHP 中 and 与 &&、or 与 || 的 区别
- java程序设计基础(1)
- 布局优化
- Struts的常量与全局配置