Visual studio 错误非静态字段、方法或属性需要对象引用';gameManager.CompleteLevel()和#x27;

Visual studio 错误非静态字段、方法或属性需要对象引用';gameManager.CompleteLevel()和#x27;,visual-studio,unity3d,Visual Studio,Unity3d,我正在学习Brackeys为Unity游戏编写的教程,出于某种原因,我的代码返回了此错误-非静态字段、方法或属性“gameManager.CompleteLevel()”需要对象引用 下面是一些代码/上下文 public class gameManager : MonoBehaviour { bool gameHasEnded = false; public float restartdelay = 11f; public void CompleteLevel()//h

我正在学习Brackeys为Unity游戏编写的教程,出于某种原因,我的代码返回了此错误-非静态字段、方法或属性“gameManager.CompleteLevel()”需要对象引用

下面是一些代码/上下文

public class gameManager : MonoBehaviour
{
    bool gameHasEnded = false;
    public float restartdelay = 11f;

    public void CompleteLevel()//here is the Error
    {
        Debug.Log("LEVEL COMPLETED");//printing this to make sure it works
    }

    public void gameEnd()
    {
        if (gameHasEnded == false)
        {
            gameHasEnded = true;
            Debug.Log("GAME OVER");
            Invoke("Restart", 2f);//here making a delay
        }
    }
}

错误-非静态字段、方法或属性“gameManager.CompleteLevel()”需要对象引用。
发生这种情况是因为您试图直接访问某个对象,而不是静态的或不使用引用。您需要决定是否要使用此方法或类,或者创建对它的引用

你只需要这样做,使它静态

public static void CompleteLevel()//here is the Error
{
    Debug.Log("LEVEL COMPLETED");//printing this to make sure it works
}

下面是更多的代码------------------------------------------//我试图使重启函数}void restart(){SceneManager.LoadScene(SceneManager.GetActiveScene().name);}}我正在使用------使用UnityEngine;使用UnityEngine.SceneManagement;你能在线编辑你的代码吗?你应该用PascalCase命名你的类。i、 e.
GameManager
而不是
GameManager
,以区分类类型和实例对象。虽然静态可以让代码编译,但这并不一定是正确的做法。它可能会很好地工作,因为
gameManager
可以像单例一样使用,但由于它是
monobhavior
组件,这可能不是真的,并且询问者可能会做出一些更改,从而导致不希望的行为,因为该方法现在是静态的。