Let’s Code mit Jens Episode 16 released

Ich habe Episode 16 meiner Videoreihe “Let’s Code mit Jens” veröffentlicht:

Aktuelles Thema: Posteingang

Sonderfall ist gelöst. Es geht weiter mit dem List-Control. Hinzufügen und Löschen von Elementen aus der Liste steht auf dem Programm.

Aber was war nun eigentlich das Problem in der letzten Folge?

Im Test hatte ich für die Elemente der Liste eine Klasse, welche von MonoBehavior ableitet erstellt. Eine Instanz dieser Klasse sollte als Prefab (Muster) für alle weiteren Elemente von der Liste verwendet werden. Aber Unity hat sich beharrlich geweigert eine Instanz zu erstellen. Der Grund dafür ist, dass Unity von Klassen, die in einem Ordner namens Editor liegen und direkt von MonoBehavior ableiten, nicht erkennt, dass es sich um ein MonoBehavior handelt. Warum? Keine Ahnung. Wie auch immer, mit diesem Wissen geht es erstmal weiter.

Das Hinzufügen von Elementen wird komplett implementiert. Dabei hat die Klasse im öffentlichen Interface nur Methoden, um mit Modellen zu arbeiten. Die Darstellung ist quasi ein Implementierungsdetail.
Natürlich soll das nicht nur im Test mit Modellen klappen, sondern auch in Unity funktionieren, also werden zum Vorführen Elemente in die Liste gehängt.

Und wieder erwischt mit Unity eiskalt. Die Elemente sind zwar in der Liste, aber werden nicht dargestellt. Schon wieder rumfailen. Nach knapp 10 Minuten geben ich auf und machen eine Pause mit der Aufnahme und zu recherchieren, was da schon wieder nicht klappt.

Wenig später (halbe Stunde) finde ich tatsächlich die Lösung. Beim Kopieren des Musters wurde von Unity die Skalierung aller Achsen auf 0 gesetzt. Also unendlich klein. Die Skalierung aller Achsen auf 1 zu setzen hilft. Und kaum habe ich die Lösung eingebaut, fällt mir auf, dass Unity mir schon die ganze Zeit in der Konsole per Logeintrag versucht hat mitzuteilen, was da eigentlich schief geht und wie die eigentliche Lösung aussieht: Man nehme eine andere Überladung der Methode SetParent.
Mit diese Wissen klappt dann auch der Rest der Implementierung des Hinzufügens von Elementen.
Auch das Entfernen von Elementen klappt dann wie geschmiert.

Nächste Folge wird dann die Selektion eingebaut und das Control zum Abschluss gebracht.

Zur Erinnerung: Der Posteingang
Über den Posteingang erhält der Spieler Transportanfragen und später auch Rechnungen und Bewerbungen. Erreicht wird der Posteingang über das Kontextmenü der Städte, sofern die jeweilige Stadt eine Filiale beherbergt. Der Posteingang wird durch ein Fenster dargstellt. Eine Liste zeigt eine Übersicht aller unbearbeiteten Eingänge. Vorerst sind das ausschließlich Transportanfragen. Wählt der Spieler einen Eintrag in der Liste aus, werden in einer Detailansicht die genauen Einzelheiten angezeigt. Bei Transportanfragen sind das Details, wie zum Beispiel die Menge, die Art und das Ziel der Fracht, sowie die Bezahlung. Über Schaltflächen in der Detailansicht kann der Spieler die Transportanfrage annehmen oder ablehnen.


I released episode 16 of my German series “Let’s Code mit Jens”: https://youtu.be/E0jXixU-XNU

Actual topic: Mailbox
I go on with the addition and deletion of elements into the List-Control. The problem of the last video is solved: Do not use MonoBehavior classes, which are defined in the editor project. Unity does not recognize them!

After some design tweaks and a fail, which forces me to make a break of the video for research, I am able get the topic done.

In the next episode and will move on implementing the selection of elements of the list control.

Quick reminder for the mailbox:
The player gets transport requests and later bills and job applications through the mailbox. The player can open the mailbox via the context menu of a city, provided that the city locates a branch office of the cooperation. The mailbox is displayed inside a window. There a list shows an overview of all open entries. For the beginning entries are only transport requests. If the player selects such an entry, details of it are shown at a detail view of the mailbox. If the entry is a transport request these details will be information such as the amount, the type and the destination of the freight and also the payment for transportation. With the help of buttons, which are located inside the detail view, the player can accept or decline the transport request.

Let’s Code mit Jens Episode 15 released

Ich habe Episode 15 meiner Videoreihe “Let’s Code mit Jens” veröffentlicht:

Aktuelles Thema: Posteingang
Nachdem nun der Posteingang geöffnet und geschlossen werden kann, erstelle ich ab dieser Folge ein List-Control, welches alle Transportanfragen kompakt darstellen soll. Da es noch mehr Fenster geben wird, welche auch solche Listen benötigen, wird es ein allgemeines List-Control. Zu Beginn lege ich die benötigten UI-Elemente in Unity an und wechsle danach in den Code, um auch dieses Control testgetrieben zu entwickeln. Ich lege schonmal das erwartete öffentliche Interface des Controls an, ohne diese zu implementieren und starte mit der Methode zum Hinzufügen von Elementen.
Und zack! Unity erwischt mich eiskalt mit einem Sonderfall, der mich den Rest der Folge zum rumfailen bringt (die letzten 20 Minuten). Gefrustet breche ich die Folge ab, um ohne Aufnahme rauszufinden, was zum Teufel denn da los ist…

Das heißt, die nächste Folge geht dann weiter mit einer Lösung dieses Problems und der eigentlichen Implementierung des Controls.

Zur Erinnerung: Der Posteingang
Über den Posteingang erhält der Spieler Transportanfragen und später auch Rechnungen und Bewerbungen. Erreicht wird der Posteingang über das Kontextmenü der Städte, sofern die jeweilige Stadt eine Filiale beherbergt. Der Posteingang wird durch ein Fenster dargstellt. Eine Liste zeigt eine Übersicht aller unbearbeiteten Eingänge. Vorerst sind das ausschließlich Transportanfragen. Wählt der Spieler einen Eintrag in der Liste aus, werden in einer Detailansicht die genauen Einzelheiten angezeigt. Bei Transportanfragen sind das Details, wie zum Beispiel die Menge, die Art und das Ziel der Fracht, sowie die Bezahlung. Über Schaltflächen in der Detailansicht kann der Spieler die Transportanfrage annehmen oder ablehnen.


I released episode 15 of my German series “Let’s Code mit Jens”: https://youtu.be/BliZ3K8sSWc

Actual topic: Mailbox
The player can open and close the mailbox window, so I start creating a list control, which shall give an overview of transport requests. I will create more windows, which will need such a control too, so the control should be generic. First I arrange the required ui components inside of Unity and then I change to the code, because I want to develop this control test driven too. I create the expected public interface of the control without implementing it and start with the method for adding elements to the list.
Boom! Unity catches me red-handed with a special case, which gets me to fail around the rest of the episode. I stop the episode frustated to look for the reason and a solution off camera…

This means, I will show the solution of this problem in the next episode and will move on implementing the list control.

Quick reminder for the mailbox:
The player gets transport requests and later bills and job applications through the mailbox. The player can open the mailbox via the context menu of a city, provided that the city locates a branch office of the cooperation. The mailbox is displayed inside a window. There a list shows an overview of all open entries. For the beginning entries are only transport requests. If the player selects such an entry, details of it are shown at a detail view of the mailbox. If the entry is a transport request these details will be information such as the amount, the type and the destination of the freight and also the payment for transportation. With the help of buttons, which are located inside the detail view, the player can accept or decline the transport request.