Unity3d 协同路由不工作,所有代码立即调用,没有任何收益或等待

Unity3d 协同路由不工作,所有代码立即调用,没有任何收益或等待,unity3d,Unity3d,我试图调用一个协程,该协程设置一些变量,等待几秒钟,然后将它们设置回原位 不幸的是,整个协同程序正在一次全部启动,没有等待。在这种情况下,几乎就好像根本没有调用函数一样 public void Dash(){ lastDashTime = Time.time + dashWaitDuration; motionBlur (); //this call is not working as expected animator.SetFloat ("Speed", 0);

我试图调用一个协程,该协程设置一些变量,等待几秒钟,然后将它们设置回原位

不幸的是,整个协同程序正在一次全部启动,没有等待。在这种情况下,几乎就好像根本没有调用函数一样

public void Dash(){
    lastDashTime = Time.time + dashWaitDuration;

    motionBlur (); //this call is not working as expected

    animator.SetFloat ("Speed", 0);
    playerRigidBody.MovePosition (playerRigidBody.position + transform.forward * 1.75f);
}


//this is the coroutine
IEnumerator motionBlur(){
    print ("Hello");
    camMotionBlur.jitter = 10;
    camMotionBlur.enabled = true;

    yield return new WaitForSeconds (2);

    camMotionBlur.enabled = false;
    camMotionBlur.jitter = 0.125f;
}

如果您试图在C#中启动协同例程,则需要调用
startcroutine

StartCoroutine(motionBlur());

您需要使用StartCustomer调用IEnumerator。检查。代码如下:

StartCoroutine(motionBlur ());

之后,您的代码将正常工作。

它将返回一个枚举器对象,等待您在执行从
yield return
motionBlur
方法末尾的所有操作之前对其进行枚举。你永远不会那样做。您将丢弃未使用的
IEnumerator
。这是一个常见的统一习语吗?我一点也不知道,天哪,哈哈,我完全忘记了,对不起,没有任何事情发生在我们最好的人身上。快乐编码!谢谢山姆·马里恩…:-)