无法使Invoke()工作

时间:2017-07-25 00:14:31

标签: c# unity3d

//Tring to add a delay before game restarts

using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour {

    bool GameEnded = false;

    public float RestartDelay = 4f;

    public void CompleteLevel ()
    {
        Debug.Log("1!");
    }

    public void GameOver ()
    {
        if (GameEnded == false) 
        {
            GameEnded = true;
            Debug.Log("Game Over");
            Invoke("Restart", RestartDelay);
            Restart();

        }
    }

    void Restart ()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);
    }
}

1 个答案:

答案 0 :(得分:1)

您使用Invoke在一定延迟后拨打Restart(),然后直接拨打Restart(),这将加载下一个场景。

Invoke的作用是允许您安排在一定时间后发生的方法调用。您似乎正在使用它作为一个函数,它会使进程等待一段时间,这是错误的。

只需在Restart()

之后删除Invoke("Restart", RestartDelay);来电