Visual studio 错误非静态字段、方法或属性需要对象引用';gameManager.CompleteLevel()和#x27;
我正在学习Brackeys为Unity游戏编写的教程,出于某种原因,我的代码返回了此错误-非静态字段、方法或属性“gameManager.CompleteLevel()”需要对象引用 下面是一些代码/上下文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
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
组件,这可能不是真的,并且询问者可能会做出一些更改,从而导致不希望的行为,因为该方法现在是静态的。