相关疑难解决方法(0)

StartCoroutine/yield返回模式如何在Unity中真正起作用?

我理解协程的原理.我知道如何让标准StartCoroutine/ yield return模式在Unity中的C#中工作,例如调用一个方法返回IEnumeratorvia StartCoroutine并在该方法中执行某些操作yield return new WaitForSeconds(1);,等待一秒,然后执行其他操作.

我的问题是:幕后真的发生了什么?什么是StartCoroutine真的?什么IEnumeratorWaitForSeconds恢复?如何StartCoroutine将控制权返回到被调用方法的"其他"部分?所有这些如何与Unity的并发模型相互作用(在不使用协同程序的情况下,许多事情同时发生)?

c# coroutine unity-game-engine

124
推荐指数
4
解决办法
7万
查看次数

理解协同程序的执行

我在Unity工作,但这只是一个C#问题所以我希望这是发布这个问题的正确部分.无论如何,我仍然无法在脑中看到脚本的执行,特别是当有多个运行时它们都有不同的功能.

最近因为我将Update,FixedUpdate和Coroutine添加到我的"何时运行"列表中而变得更加复杂?更新和修复更新我得到了要点.

至于Coroutine,我基本上理解它是一种功能,可以让我更准确地控制时间.这是我知道我能做的唯一方法"收益返回新的WaitForSeconds(i);"

我的问题更多的是他们的执行顺序.例如,如果我从更新调用协程(每帧运行一次)并且协程有一个waitforseconds(10),那么将暂停执行所有脚本?是否有一个中央时钟运行一切?在等待结束之前,更新是否会再次运行?如果我有另一个脚本,其中包含一个包含不同协程的更新函数,并且两个协同程序同时运行,该怎么办?

也许我是模糊的.难以解释.我已经在网上阅读了一些关于协同程序的信息,但没有任何东西可以用我可以想象的方式来解释它.

c# unity-game-engine

3
推荐指数
1
解决办法
1279
查看次数

标签 统计

c# ×2

unity-game-engine ×2

coroutine ×1