Unity 2018中使用Async-Await替代 coroutines

在Unity中使用协程通常是解决某些问题的好方法,但是它也具有某些缺点:

协程不能返回值。这鼓励程序员创建巨大的整体协程方法,而不是用许多较小的方法组成它们。存在一些变通办法,例如将Action <>类型的回调参数传递给协程,或在协程完成后强制转换从协程产生的最终未类型化值,但是这些方法使用起来很麻烦并且容易出错。
协程使错误处理变得困难。您不能将yield放入try-catch中,因此无法处理异常。另外,当确实发生异常时,堆栈跟踪只会告诉您协程在何处抛出了异常,因此您必须猜测可能从哪个协程中调用了该协程。
随着Unity 2017的发布,现在可以代替异步方法使用称为async-await的新C#功能了。与协程相比,它具有许多不错的功能。

要启用此功能,您需要做的就是打开播放器设置(“编辑”->“项目设置”->“播放器”),并将“脚本运行时版本”更改为“实验性(.NET 4.6等效)”。

让我们看一个简单的例子。给出以下协程:

public class AsyncExample : MonoBehaviour
{
IEnumerator Start()
{
Debug.Log(“Waiting 1 second…”);
yield return new WaitForSeconds(1.0f);
Debug.Log(“Done!”);
}
}
使用async-await的等效方法如下:

public class AsyncExample : MonoBehaviour
{
async void Start()
{
Debug.Lo

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值