NullReferenceException: Object reference not set to an instance of an object?

2 Antworten

Der Fehler bedeutet, dass du versuchst, ein Attribut/Methode auf einer Variable aufzurufen, die kein Objekt referenziert (= "null" ist).

Da du nicht mitgeteilt hast, in welcher Zeile der Fehler auftritt, kann ich es leider nicht lösen.

Ich rate mal, dass entweder new_game_button oder newGame keinen Wert zugeordnet haben.

Tipp: Such solche Sachen auf Englisch, StackOverflow hilft dir weiter.

Woher ich das weiß:Hobby – Ich mache Apps als Hobby.
Hofyy 
Fragesteller
 28.07.2022, 18:04

Der fehler ist in fps_controler zeile 15 also das hier: if(newGame.give_pickaxe == true){

            Debug.Log("Test");

        }

0
TestNutzung  28.07.2022, 18:07
@Hofyy

Okay, super. Das liegt daran, dass deine Variable "newGame" noch keinen Wert zugeordnet bekommen hat. Das Programm weiß also nicht, welches newGame du meinst, wenn du den boolean give_pickaxe darauf überprüfen möchtest.

Wahrscheinlich möchtest du ein neues new_game zuweisen.

0
Hofyy 
Fragesteller
 28.07.2022, 18:11
@TestNutzung

also muss ich im inspector das script drauf legen?

0
TestNutzung  28.07.2022, 18:14
@Hofyy

Inspector? Du musst einen Wert zuweisen, zum Beispiel newGame = new new_game();

0
Hofyy 
Fragesteller
 28.07.2022, 18:20
@Hofyy

weil dan sagt es mir das ich versuche mit "new" einen MonoBehaviour zu erstellen und das nicht erlaubt ist

0
EnderLuca  28.07.2022, 18:21
@Hofyy

Genau Richtig, einfach im inspector die Variable zuweisen.

Wenn beide Klassen auf dem selben Objekt liegen (was sie hier bestimmt nicht tun) dann kannst du auch GetComponent nutzen.

0
TestNutzung  28.07.2022, 18:24
@Hofyy

Welche Instanz soll denn da drin sein? Irgendwo muss sie ja herkommen? Wenn es nicht anders geht, kannst du in new_game eine public static new_game INSTANCE erstellen und in Start() INSTANCE = this setzen. Dann mit new_game.INSTANCE drauf zugreifen. Das ist aber dirty, ist wahrscheinlich anders gedacht. Ich kenne mich mit Unity nicht aus, schau dafür auf StackOverflow oder geh ein Tutorial durch.

0
Hofyy 
Fragesteller
 28.07.2022, 18:27
@TestNutzung

auf stack overflow hab ich keine antwort gefunden deswegen hab ich hier gefragt

0

Ein paar Optimierungen (Coding-Conventions), um deinen Code lesbarer zu machen:

  • Lasse immer nur eine freie Zeile, nicht zwei.
  • Schreibe die geschweiften Klammern mit einem Space Abstand direkt hinter die Methodendeklaration oder Klassendeklaration, zum Beispiel so:

void Example() {

}

  • Verwende keine Unterstriche in Klassen- oder Variablennamen.

Klassenname Beispiel: DasIstEineKlasse

Variablen Beispiel: dasIstEineVariable

  • Schreibe nicht "== true", das brauchst du nicht. Die if-Abfrage erwartet sowieso schon einen Boolean.
Woher ich das weiß:Hobby – Ich mache Apps als Hobby.
Hofyy 
Fragesteller
 28.07.2022, 18:14

ah ok

0
TheStalker64  28.07.2022, 23:55
@Palladin007

Ups bin nur drüber geflogen und sah nach Java aus 😅 sind ja auch 2 sehr ähnliche sprachen

0
Palladin007  28.07.2022, 23:53

Wir sind hier bei C#, also sollte man auch die üblichen C# Coding Styles verfolgen.

Schreibe die geschweiften Klammern mit einem Space Abstand direkt hinter die Methodendeklaration oder Klassendeklaration

Die geschweifte Klammer gehört in die neue Zeile nach der jeweiligen Deklaration.

Verwende keine Unterstriche in Klassen- oder Variablennamen

Für private Variablen einer Klasse schon, da gehört ein Unterstrich vor den Namen.

1