位置: 编程技术 - 正文
推荐整理分享Unity3D: StartCoroutine 和 yield return 深入研究,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
原文地址: return表面意思很好理解,StartCoroutine就是开启一个协程,yield return 是迭代器块返回调用迭代的地方。 是吧?不知道你什么感觉,反正我觉得,还是需要深入研究一下的。OK,here we go!
首先,先看一下StartCoroutine在Unity官方的解释。
意思是:一个协程的执行可以在任何地方用yield语句来暂停,yield return的值决定了什么时候协程恢复执行。协程在协调在几帧中执行的操作时有极大的用处.协程几乎没有任何性能开销。
StartCoroutine一般都会立即返回,然而你也可以获得返回结果的值。但是这一步会等到协程结束执行才能生效。
OK,意思应该不难理解,根据他的意思我们来分析一段程序。
运行结果是:
start1
test1
start2
test2
这下就一目了然了,当StartCoroutine刚调用的时候,可以理解为正常的函数调用,然后接着看调用的函数里面。
当被调用函数执行到yield return null;(暂停协程,等待下一帧继续执行)时,根据Unity解释协同程序就会被暂停,其实我个人认为他这个解释不够精确,先返回开始协程的地方,然后再暂停协程。也就是先通知调用处,“你先走吧,不用管我”,然后再暂停协程。。怎么?不信?那我们再写个demo验证一下。
执行结果:
start1
test1
start2
test2 (这个test2是等待三秒后才打印出来的)
正好顺便验证了“yield return的值决定了什么时候协程恢复执行”这句,其实yield return后面的值可以后很多用法,可以看这个帖子: return StartCoroutine,第一个StartCoroutine会等到第二个StartCoroutine中所有代码结束后再继续执行,而第二个StartCoroutine中的yield语句会先返回第一个,然后立即返回他的调用处,也就是调用处会继续执行,而第一个StartCoroutine会等待第二个执行完再继续执行。
如果还想继续深入,可以看一下C#中的迭代器,那里面说明了yield和IEnumerator根本到底是什么。
OK,今天就说到这。Good Luck!
【Unity3d】学习笔记(9)——写一个计时器工具 今天看到一个Unity3D的机试题:写一个计时器工具,从整点开始计时,格式为:::于是试着实现了一下。创建工程后添加一个Cube物体,为其添加一个
Unity3D项目优化:从Draw Calls到GC 前言:刚开始写这篇文章的时候选了一个很土的题目。。。《unity3d优化全解析》。因为这是一篇临时起意才写的文章,而且陈述的都是既有的事实,因
Unity3D游戏开发之反编译AssetBundle提取游戏资源 各位朋友,大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是
标签: Unity3D: StartCoroutine 和 yield return 深入研究
本文链接地址:https://www.jiuchutong.com/biancheng/378740.html 转载请保留说明!友情链接: 武汉网站建设