Jump to content
Unity Insider Forum
Sign in to follow this  
Peanut

TextMeshPro - NullReferenzException

Recommended Posts

Hallöchen Liebes UnityForum,

ich habe ein Problemchen mit TextMeshPro.Unzwar möchte ich das UI Text Element von TextMeshPro in einem Script benutzen das meine Wellen an Gegner zählt und an einem Gameobject gebunden ist.Nun habe ich schon das gefühlt halbe Internet durchforstet und habe nichts gefunden um das Problem zu lösen. Vielleicht könnt ihr mir ja helfen . Ist wahrscheinlich  etwas komplett Banales. :(

 public TextMeshProUGUI WaveNummer;


    private void Start()
    {
        F_waveCountdown = F_timeBetweenWaves;
        WaveNummer = gameObject.GetComponent<TextMeshProUGUI>();
    }


    void Update()
    {
        WaveNummer.text= "Wave" + I_nextWave;

Das ist der relevante Code. Ich habe natürlich das package TMPro implementiert.

Share this post


Link to post
Share on other sites

Deine Fehlermeldung bedeutet IMMER dass auf etwas zugegriffen werden soll was aber nicht bekannt ist. Unity schmeißt dir immer auch die Zeile im Code raus, wo dieser Zugriff stattfindet. Da kann man also leicht erkennen, um welches Objekt oder Komponente es sich handelt.
Wenn dein Codebeispiel nur dieses TextMeshProGUI ansprechen will, dann ist es dieses auch.
Komisch ist jetzt an deinem Beispiel, dass du oben ja eine public Variable bildest, wo du über den Inspector einfach das Textmesh rein legen könntest. In der Start Methode versuchst du aber dann eine Referenz zu bilden, indem du davon aus gehst, dass das Textmesh genau auf diesem GameObject liegt, wo auch dieses Script liegt. Aber da wird es wohl nicht liegen.
Ja und selbst wenn du via Inspector das Textmesh der Variable zugewiesen hast, es aber nicht auf diesem GO liegt, würdest du in der Start die Variable WaveNumber überschreiben. Und zwar mit "null". WaveNummer hätte jetzt also keine Referenz und deswegen kommt der Fehler.

Fazit: Dein Textmesh und dein Script liegen nicht auf dem gleichen GameObject!

Share this post


Link to post
Share on other sites

Ja genau das ist mein Problem. Das Script soll nicht auf dem Gameobject liegen :P

Die Exception wird durch diese Zeile ausgelöst (hätte ich dazu schreiben sollen)

WaveNummer.text= "Wave" + I_nextWave;

Share this post


Link to post
Share on other sites

Wenn es nicht da liegen soll und dann wohl auch nicht liegt, dann kannst du in der Start auch nicht über gameObjct.GetComponent<> versuchen eine Referenz zu bilden.
Verstehst du das?

gameObject ist das GameObject auf dem das Script liegt. Also quasi der Vatter!
Hat dieses GameObject kein Textmesh, kann es auch nicht mit GetComponent gefunden werden, denn es ist ja keine Textmesh Komponente auf dem Gameobject.
Und weil das so ist, wird deine Variable nach dem Versuch null sein! Egal ob sie vorher eine Referent zum Textmesh hatte.

Leg einfach dein Textmesh im Inspector auf den Slot vom Script und nimm die Zeile in der Start raus. Schon wird's gehen.
 

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...
Sign in to follow this  

×
×
  • Create New...