Jump to content
Unity Insider Forum

Object reference not set to an instance of an object beim inista


aaron_case

Recommended Posts

Beim folgendem Code (Gekürzt) bekomme ich immer den Error:"NullReferenceException: Object reference not set to an instance of an object". Im Editor habe ich das Objekt aber "hinterlegt".

public GameObject trainerPrefab
void Start(){
	GameObject newEnemy = (GameObject) Instantiate(trainerPrefab,new Vector3(...),Quaternion.identity);
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum du die Meldung bekommst, weiß ich jetzt auch nicht so direkt, da du ja schreibst, dass du das trainerPrefab hinterlegt hast. Wobei ich nicht genau weiß, was du mit hinterlegt meinst.
Also du hast es im Inspector auf die Public Variable gezogen?!
Du solltest aber die Variable newEnemy nicht in der Start bilden, sondern oben, wo auch dein trainerPrefab ist.
Ja und dann castest du ja als GameObject, obwohl das TrainerPrefab eh vom Typ GameObject ist und du es mit newEnemy verknüpfst, was ja auch ein GameObject ist.
Vielleicht mag er das ja nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn das da oben wirklich der einzige Code ist und die Meldung bei der längeren Zeile auftritt und ganz sicher nicht woanders, dann ist trainerPrefab einfach nicht gesetzt. Der Code ist soweit nämlich okay, und eine andere Stelle gibt es da nicht, wo dieser Fehler entstehen kann.

Wenn du dir ganz sicher bist, dass du da ein Objekt reingezogen hast, ist die wahrscheinlichste Fehlerursache, dass du irgendwo versehentlich mal eine zweite Instanz dieser Komponente irgendwo in deine Szene gesetzt hast, eventuell ohne es zu merken. Schau aber erstmal, ob die Fehlermeldung tatsächlich von genau dieser Zeile kommt und ob da nicht noch ein paar Zeilen mehr im Spiel sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok hier der vollständige Code:

using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.XPath;
using UnityEngine;

public class trainerscript : MonoBehaviour
{
    public Texture2D Sprite1;
    public GameObject trainerPrefab;
    
    // Start is called before the first frame update
    void Start()
    {
        
        XmlDocument document = new XmlDocument();
        document.Load("assets/scripts/Vorlagen/trainerpositionen.xml");
        XmlNodeList TrainerStamm = document.GetElementsByTagName("Trainer");
        for (int i = 1;i == TrainerStamm.Count; i++)
        {
            GameObject newEnemy = (GameObject) Instantiate(trainerPrefab,new Vector3(float.Parse(TrainerStamm[i].Attributes.GetNamedItem("x").Value), float.Parse(TrainerStamm[i].Attributes.GetNamedItem("y").Value)),Quaternion.identity);

    }
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

Der Fehler zeigt ganz sciher auf dieses Script und das Script ist auch niergendwo anders reingezogen.

Unbenannt.thumb.PNG.c4403969aeda612b4060f3cd849934c7.PNGUnbenannt2.PNG.9006ef4ef5b6a3e72fd863ce16850e1e.PNG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mach dir mal ein paar Zeilen davor, mit Debug.Log. Damit kannst du testen, welche der Variablen jetzt den Wert null hat. Kandidaten sind:

  • TrainerStamm
  • TrainerStamm
  • TrainerStamm.Attributes
  • TrainerStamm.Attributes.GetNamedItem("x")
  • TrainerStamm.Attributes.GetNamedItem("y")

Je nachdem, ob es sich hier um Objekte oder Struct-Werte handelt, kann jede dieser Variablen als Wert null haben und deshalb die Exception auslösen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...