在下一帧运行函数(不在update()中)Unity

时间:2019-03-21 20:33:13

标签: c# unity3d

我正在尝试在2D碰撞后的几秒钟内运行代码块。当前,当发生冲突时,它会调用一个循环自身的函数,直到达到特定时间为止。使用时间变量并在每次迭代中添加Time.deltaTime来计算时间。

这是功能

public void springBack(Collider2D collision, float timeCount) {
    if (timeCount > springReloadTime * 10) {
        Debug.Log("Springing Back!");

        timeCount = 0f;
    } else {
       timeCount = timeCount + Time.deltaTime;

       springBack(collision, timeCount);
    }
}

运行此程序时出现问题。一切发生在碰撞后的一帧中,而不是几秒钟之后。如果我可以在下一帧调用springBack(collision, timeCount);函数,那么它将起作用。当我查找它时,有人建议使用yield return null;,但是由于这不是循环,因此在这里出现此错误:

The body of 'playerMovement.springBack(Collider2D, float)' cannot be an iterator block because 'void' is not an iterator interface type

还有另一种方法可以强制它在下一帧上运行吗?我可以从update()循环中调用它,但是我认为我可以运行该函数的多个实例,而无需相互推断。如果您需要某些公共变量的值(例如springReloadTime),请询问。

0 个答案:

没有答案