Jump to content
Unity Insider Forum

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...