在Unity中使用协程通常是解决某些问题的好方法,但是它也具有某些缺点:
协程不能返回值。这鼓励程序员创建巨大的整体协程方法,而不是用许多较小的方法组成它们。存在一些变通办法,例如将Action <>类型的回调参数传递给协程,或在协程完成后强制转换从协程产生的最终未类型化值,但是这些方法使用起来很麻烦并且容易出错。 协程使错误处理变得困难。您不能将yield放入try-catch中,因此无法处理异常。另外,当确实发生异常时,堆栈跟踪只会告诉您协程在何处抛出了异常,因此您必须猜测可能从哪个协程中调用了该协程。 随着Unity 2017的发布,现在可以代替异步方法使用称为async-await的新C#功能了。与协程相比,它具有许多不错的功能。
要启用此功能,您需要做的就是打开播放器设置(“编辑”->“项目设置”->“播放器”),并将“脚本运行时版本”更改为“实验性(.NET 4.6等效)”。
让我们看一个简单的例子。给出以下协程:
public class AsyncExample : MonoBehaviour
{
IEnumerator