Jump to content
Unity Insider Forum
aaron_case

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

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);
}

 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites

Ich hab halt ganz stumpf aufgeschrieben, wo rein syntaktisch eine NullReferenceException auftreten kann. Ich kenne ja die Klassen nicht.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...