Coroutines Unity
问题描述:
我想了解c#中协程的语法(因为它接缝对我来说真的很不寻常......)。Coroutines Unity
当我们这样做:
yield return new WaitForSeconds(2.0f);
Firstable:我理解这句话的目的,而不是语法。
WaitForSeconds类代表什么?它应该是IEnumerator类型的,因为这是函数的返回类型。但根据文档http://docs.unity3d.com/ScriptReference/WaitForSeconds-ctor.html,这没有返回类型,它是一个收益指令(在那里很困惑)
那么这个收益的目的是什么?案件 ?
为什么我们将它与return关键字混合?
提前致谢。
答
使用yield return调用将创建一个正在返回的类型的IEnumerable。这允许调用函数在计算结束时处理值列表,而不是一次处理所有值,就像刚刚返回集合一样。
在Unity3d中,这很重要,因为绘制循环基本上都发生在单个线程上,因此您可以使用协程和yield return语法在脚本内嵌套行为。
新的WaitForSeconds(...)调用允许执行上下文在一段时间内返回到外部调用者,同时处理空操作有效地暂停该MonoBehaviour的执行,而不暂停整个绘制线程。
答
它只是允许你并行执行一段代码。
例如:
IEnumerator PrintAfterDelay()
{
yield return new WaitForSeconds(5.0f);
//Rest of the code in this method will execute after 5 seconds while all
all other code will be execute in parallel
Debug.Log("Now I am here after 5 Seconds");
}
调用它的start()为例。
void Start()
{
StartCoroutine("PrintAfterDelay");
Debug.Log("I am here");
}
正在写一个答案,但基本上它应该结束是这个网站的复制粘贴: http://twistedoakstudios.com/blog/Post83_coroutines-more-than-you-want-to-know 我假设你知道协程是怎么做的,为什么它可以是有用的,否则那个链接将毫无用处。 – GameDeveloper 2014-09-04 18:09:26
你应该刚刚添加这个答案;) – ryanscottmurphy 2014-10-30 22:47:23