Aron23 Geschrieben 1. Oktober 2020 Melden Share Geschrieben 1. Oktober 2020 Der angegebene Fehler Lautet: NullReferenceException: Object reference not set to an instance of an object GlobalStone.Update () u sing System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GlobalStone : MonoBehaviour { public static int StoneCount; //zählt wie viele Steine der Spieler hat public GameObject StoneDisplay; //Zeigt die Anzahl an Steinen an public int InternalStone; public SteinLager mySteinLager; // Script um die Maximale Anzahl an aufnehmbaren Steinen zu beschränken int G;// Größe für eine Anzeige (9/10 Steinen) void Update() { G =5 * mySteinLager.LagerSGo; InternalStone = StoneCount; StoneDisplay.GetComponent<Text>().text = "Stein: " + InternalStone; } } using System.Collections; using System.Collections.Generic; using UnityEngine; public class SteinLager : MonoBehaviour { public int LagerSGo = 1;//Anzahl an gekauften Lagererweiterungen public int LagerSLeer;//Um den zustand des Lagers zu kontrolieren public int LagerS;//Um die maximale Lagerkapazietät zu bestimmen void Update() { LagerS = 5 * 1 * LagerSGo; if (LagerS > GlobalStone.StoneCount) { LagerSLeer = 1; } else { LagerSLeer = 2; } } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Aron23 Geschrieben 1. Oktober 2020 Autor Melden Share Geschrieben 1. Oktober 2020 Danke für jede Hilfe sollten noch fragen oder andere Scrips benötigt werden stelle ich diese gerne zur Verfügung . Bin recht neu und finde den Fehler Leider 😅. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SimpleScript Geschrieben 1. Oktober 2020 Melden Share Geschrieben 1. Oktober 2020 Hey ho, ich versuch dir mal bei deinem Problem zu helfen und dir auch gleich Tipps zu geben, wie du dir am besten selber helfen kannst :). 1. Die Console enthält meistens die benötigten Informationen wenn etwas in Unity nicht funktioniert. Sie sagt dir meisten genau wo (Zeilennummer) und was fehlschlägt (NullReferenceException). Für uns wäre es wichtig, dass du die genaue Fehlermessage aus der Console in den Thread kopierst, so können wir dir schneller helfen. 2. Die Fehlermessage NullReferenceException: Object reference not set to an instance of an object ist eine sogenannte Laufzeitexception. Der Exceptiontyp (NullReferenceException) sagt dir auch meistens genau welche Art von Exception auftritt. In deinem Fall handelt es sich um eine NullReferenceException. Das bedeutet, dass ein Objekt zur Laufzeit nicht gefunden wurde. Das kann darauf schließen, dass ...- ... ein Objekt wurde nicht Initalisiert wurde - ... es zur Laufzeit auf null gesetzt wurde - ... es gelöscht wurde - ... es nicht gefunden werden konnte. Wenn man sich deine Bilder anschaut "können" 3 Objekte null sein: public GameObject StoneDisplay; //Zeigt die Anzahl an Steinen an public SteinLager mySteinLager; StoneDisplay.GetComponent<Text>().text Prüfe am besten ob die "public Variablen" auch zur Laufzeit im Inspector zugewiesen sind. Ich vermute aber das er im StoneDisplay keinen Text Element findet. Um das zu überprüfen könntest du ein try/catch Block verwenden oder ein if statement. if(StoneDisplay.GetComponent<Text>() != null){ StoneDisplay.GetComponent<Text>().text = "test"; } else { Debug.log("Error: StoneDisplay.GetComponent<Text>() is not existing"); } Gruß SimpleScript Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Aron23 Geschrieben 1. Oktober 2020 Autor Melden Share Geschrieben 1. Oktober 2020 vor 55 Minuten schrieb Aron23: G =5 * mySteinLager.LagerSGo; ok an dieser Zeile liegt es aber ich hab die Variable doch auf 1 gesetzt oder nicht wie kann die da Null sein? vor 56 Minuten schrieb Aron23: public int LagerSGo = 1;//Anzahl an gekauften Lagererweiterungen ? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 1. Oktober 2020 Melden Share Geschrieben 1. Oktober 2020 NullReferenceExceptions treten nur dann auf, wenn vor einem Punkt oder einer eckigen öffnenden Klammer etwas steht, das als Wert null hat oder ergibt. ichBinNull.zeug ichBinNull[3] IchGebeNullZurueck().zeug Wenn in der Zeile also eine NullReferenceException fliegt, dann kann das nur an mySteinLager liegen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Aron23 Geschrieben 1. Oktober 2020 Autor Melden Share Geschrieben 1. Oktober 2020 Und wieso ist das Null? Ich verstehe das nicht😭 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 1. Oktober 2020 Melden Share Geschrieben 1. Oktober 2020 Keine Ahnung, musst du halt rausfinden Typischer Fehler ist, dass du das Script nochmal irgendwo in der Szene hast und das Ding da nicht zugewiesen ist. Alternativ setzt irgendein Stück Code den Wert auf null. Das würdest du dann ja aber im Inspektor sehen. Eine wieder andere Möglichkeit wäre, dass du dich irgendwie in der Zeile verguckt hast. Letzte Idee: Die Fehlermeldung ist veraltet und lungert halt noch so in der Konsole rum. Hast du "Clear on Play" an? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Aron23 Geschrieben 1. Oktober 2020 Autor Melden Share Geschrieben 1. Oktober 2020 Clear on Play ist an und in meinen 3 MechanicsObjects sind die Scrips alle dort wo sie hin sollen wo anders benutze ich es nicht Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 1. Oktober 2020 Melden Share Geschrieben 1. Oktober 2020 Ich sehe gerade: Code-Tags gibt's übrigens mit dem <>-Knopf, das Anführungszeichen ist für Zitate Du kannst, wenn du dich mit dem Debugger deiner IDE nicht auskennst, einfach mal ein Debug.Log in die Zeile davor setzen: Debug.Log(mySteinLager); G =5 * mySteinLager.LagerSGo; ...und dann schauen, ob du "null" in der Konsole kriegst. Wenn nicht, dann suchen wir gerade an der falschen Stelle. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.