In Susuwatari funktionierte die Logik. Die Kohle wurde korrekt gezählt, der Ofen übernahm die Menge und setzte coalAmount auf 0. Trotzdem blieb die Anzeige im Spiel unverändert. Die Ursache lag nicht im Gameplay System, sondern in der fehlenden Verbindung zwischen Logik und UI.
Das eigentliche Problem
Unity aktualisiert UI Elemente nicht automatisch, wenn sich eine Variable ändert.
coalAmount wurde zwar im Furnace Script auf 0 gesetzt, doch TextMeshPro wusste nichts davon. Die Anzeige zeigte weiterhin den alten Wert, obwohl das Inventar bereits geleert war.
Die Konsole bewies es eindeutig:
Ofen: allCollected=True coalAmount=0 detector=True
Die Variable war 0. Nur der Text blieb unverändert.
Warum das passiert
Das UI ist kein Live Spiegel einer Variable.
Es ist nur ein Textfeld, das du aktiv aktualisieren musst.
Wenn coalAmount verändert wird, muss danach explizit:
UpdateCoalUI();
aufgerufen werden.
Ohne diesen Aufruf bleibt der alte Text stehen.
Die Lösung im Furnace Script
Nach dem Zurücksetzen der Kohle muss die UI aktualisiert werden.
coalStored += detector.coalAmount;
detector.coalAmount = 0;
detector.UpdateCoalUI();
Dieser eine zusätzliche Methodenaufruf verbindet die Logik mit der Anzeige.
Warum das sauber gelöst ist
Die UI Aktualisierung gehört nicht ins Furnace Script selbst, sondern bleibt im PlayerCoalDetector gekapselt. Der Ofen sagt nur: „Dein Wert hat sich geändert“.
Der Player kümmert sich um seine Darstellung.
So bleibt die Struktur klar getrennt:
- Player speichert Kohle
- Furnace verarbeitet Kohle
- Player aktualisiert seine UI
Was man daraus lernt
In Unity sind Daten und Darstellung getrennt. Eine Variable zu ändern reicht nicht aus. Jede UI Komponente braucht eine bewusste Aktualisierung.
Gerade bei Gameplay Mechaniken wie Sammeln und Abliefern ist sichtbares Feedback entscheidend. Erst wenn die Zahl sichtbar auf 0 springt, fühlt sich die Übergabe vollständig an.
Fazit
Das Problem lag nicht im RoomCoalManager, nicht im Trigger und nicht im Ofen. Die Logik funktionierte bereits korrekt. Es fehlte lediglich die bewusste Aktualisierung der UI nach der Zustandsänderung.
Mit einem einzigen Methodenaufruf wurde aus einer unsichtbaren Logikänderung ein sichtbarer, nachvollziehbarer Spielmoment. Genau solche Details machen aus funktionierendem Code ein funktionierendes Spiel.
Weitere Artikel auf Games und Lyrik: Die Pendulo Studios
