Unity CS0120: An object reference is required for the non-static field, method, or property 'Variable'?
Hallo,
Ich habe den Fehler CS0120: An object reference is required for the non-static field, method, or property 'Variable' in meinem Unity Projekt bekommen.
Ich habe online gelesen, dass das passiert, wenn man aus einer statischen Methode eine nihct statische Variable aufgerufen wird. Aber ich habe keine einzige statische Methode in meinem Code. Woran könnte das noch liegen?
public class NewBehaviourScript1 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
Debug.Log(MainClass.hi());
}
}
public class MainClass
{
public void hi(){
Debug.Log("hi");
}
}
Ich hoffe auf Hilfe,
Bohne47
1 Antwort
Die Methode hi ist objektgebunden. Du versuchst dennoch, sie über die Klasse aufzurufen.
Insofern gibt es zwei Lösungsoptionen. Entweder machst du aus hi eine statische Methode
public static void hi()
{
/* ... */
}
oder du kreierst eine Instanz von MainClass, um sie aufrufen zu können. Wobei man hier überlegen sollte, ob das Objekt bei jedem Aufruf von Update erstellt werden muss, oder ob nicht ein Objekt ausreicht.
private MainClass mainClassObject = new MainClass();
void Update()
{
Debug.Log(mainClassObject.hi());
}
Generell empfiehlt es sich, sich erst mit C#-Grundlagen sowie OOP auseinanderzusetzen, bevor man mit Unity beginnt, Spiele zu entwickeln.
Danke, dachte ich kriege das so hin mit nur einem Unity Tutorial. Aber sich noch ein C# Tutorial anzugucken ist ne gute Idee