Локальная функция RestartGame объявлена, но никогда не использовалась Assembly-CSharp - PullRequest
0 голосов
/ 04 мая 2020

Мне очень нужна помощь, когда я помещаю Invoke в C#, у меня появляется эта ошибка:

Локальная функция 'RestartGame' объявлена, но никогда не использовала Assembly-CSharp

Я действительно не знаю, почему это происходит, но вот код:

using UnityEngine; использование UnityEngine.SceneManagement;

publi c class GameManager: MonoBehaviour {bool gameHasEnded = false;

public float restartDelay = 2f;
public void EndGame()
{
    if (gameHasEnded == false)
    {
        gameHasEnded = true;
        Debug.Log("GAME OVER");
        Invoke("RestartGame", restartDelay);
    }

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

}

Ответы [ 2 ]

1 голос
/ 04 мая 2020

руководство по единству: для повышения производительности и удобства использования используйте вместо этого сопрограммы. https://docs.unity3d.com/ScriptReference/MonoBehaviour.Invoke.html

Попробуйте что-то вроде этого:

using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    bool gameHasEnded = false;

    public float restartDelay = 2f;
    private IEnumerator coroutine;

    public void EndGame()
    {
        if (gameHasEnded == false)
        {
            gameHasEnded = true;
            Debug.Log("GAME OVER");

            coroutine = RestartDelayed(restartDelay);
            StartCoroutine(coroutine);
        }

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

        IEnumerator RestartDelayed(float delay)
        {
            yield return new WaitForSeconds(delay);
            RestartGame();
        }

    }
}

https://docs.unity3d.com/ScriptReference/MonoBehaviour.StartCoroutine.html

0 голосов
/ 04 мая 2020

Я проголосовал за ответ flychris, но просто для того, чтобы объяснить ваше сообщение об ошибке, я предполагаю, что это жёлтое предупреждающее сообщение, что вы никогда не вызываете метод RestartGame () напрямую в любом месте вашего кода, однако вы его вызываете. Вызов обычно используется для UnityEvents, а сопрограммы обычно используются для задержки метода.

...