C# 当我使用Invoke调用我想要使用的方法时,我可以';我不再叫它了?

C# 当我使用Invoke调用我想要使用的方法时,我可以';我不再叫它了?,c#,unity3d,C#,Unity3d,我开始通过看视频、阅读网络文章等方式学习自己编码。我认为边做边学更适合我,所以我开始通过Brackeys教程视频制作一个Unity游戏 using UnityEngine.SceneManagement; using UnityEngine; public class gameManager : MonoBehaviour { bool hasGameEnded = false; public float restartDelay = 1f; public void

我开始通过看视频、阅读网络文章等方式学习自己编码。我认为边做边学更适合我,所以我开始通过Brackeys教程视频制作一个Unity游戏

using UnityEngine.SceneManagement;
using UnityEngine;

public class gameManager : MonoBehaviour
{
    bool hasGameEnded = false;

    public float restartDelay = 1f;
    public void endGame()
    {
        if (hasGameEnded == false)
        {
            
            hasGameEnded = true;
            Invoke("Restart", 2f);
        }

        void Restart()
        {

            SceneManager.LoadScene(SceneManager.GetActiveScene().name);

        }

    }

所以我这里的问题是,当我将invoke与Restart方法一起使用时,所有调用都不起作用。 “警告CS8321本地函数‘Restart’已声明但从未使用”这是我得到的错误

如果需要,我可以展示我在哪里以及如何使用终局法。感谢您的帮助。

如果
Void
在另一个
Void
中,它将不起作用。 因此您需要更改:

using UnityEngine.SceneManagement;
using UnityEngine;

public class gameManager : MonoBehaviour
{
    bool hasGameEnded = false;

    public float restartDelay = 1f;
    public void endGame()
    {
        if (hasGameEnded == false)
        {
            
            hasGameEnded = true;
            Invoke("Restart", 2f);
        }

        void Restart()
        {

            SceneManager.LoadScene(SceneManager.GetActiveScene().name);

        }

    }

}
using UnityEngine.SceneManagement;
using UnityEngine;

public class gameManager : MonoBehaviour
{
    bool hasGameEnded = false;

    public float restartDelay = 1f;
    public void endGame()
    {
        if (hasGameEnded == false)
        {
            
            hasGameEnded = true;
            Invoke("Restart", 2f);
        }
    }

    void Restart()
    {

        SceneManager.LoadScene(SceneManager.GetActiveScene().name);

    }
}
至:

using UnityEngine.SceneManagement;
using UnityEngine;

public class gameManager : MonoBehaviour
{
    bool hasGameEnded = false;

    public float restartDelay = 1f;
    public void endGame()
    {
        if (hasGameEnded == false)
        {
            
            hasGameEnded = true;
            Invoke("Restart", 2f);
        }

        void Restart()
        {

            SceneManager.LoadScene(SceneManager.GetActiveScene().name);

        }

    }

}
using UnityEngine.SceneManagement;
using UnityEngine;

public class gameManager : MonoBehaviour
{
    bool hasGameEnded = false;

    public float restartDelay = 1f;
    public void endGame()
    {
        if (hasGameEnded == false)
        {
            
            hasGameEnded = true;
            Invoke("Restart", 2f);
        }
    }

    void Restart()
    {

        SceneManager.LoadScene(SceneManager.GetActiveScene().name);

    }
}

您已在
endGame
方法中声明了
Restart
作为方法。试着把它搬出去(到教室里去)。调用
Invoke
Restart时不应使用引号。波尔·巴克给了你正确的答案。我只是想说你得到的是警告,不是错误。代码仍将编译并运行,但并不总是有效。我的建议是继续将它们视为错误并加以纠正,不要听“专家”说你可以忽略警告,因为你刚刚发现这并不总是正确的:)谢谢你善意的回答。我照你和穆罕默德说的做了,结果一切正常。波尔说的唯一错误是重启应该在引号中。我在没有引用的情况下尝试了它,但没有成功。当然,Gorilla我不会忽略警告,即使只是一个警告。谢谢你的长期建议!感谢您的示例解决方案和解释!