UI und Inhalt lose koppeln

Wie kann die Benutzeroberfläche (UI) Infos über ein Objekt anzeigen, ohne dass beide Elemente fest im Code verbunden sind?

Hintergrund

Beispielszenario: In einer Aufbausimulation liegen mehrere Gebäude als Modell in der Szene. Beim Daraufzeigen mit der Maus soll z.B. der Name des Objekts als 2D-Text angezeigt werden.

Schlechter Ansatz: Hart verdrahten

  • Schlecht: Jedes Objekt im Code ausdrücklich ansprechen. Dies macht den Code starr und unflexibel. Jegliche Änderungen an der Szene erfordert Änderungen am Code, was eine doppelte Datenhaltung (Szenen-Editor und Code) sowie höheren Testaufwand und Fehlerrisiken zur Folge hat (jede Code-Änderung kann Programmfehler einführen).

  • Schlecht: Lange if-Kaskaden erzeugen, in dem nach konkreten Objekt-Existenzen gefragt wird (wenn Objekt 1 existiert, wenn Objekt 2 existiert, ...). Dies generiert letztlich riesigen Code, der schwer zu überschauen, fehleranfällig und nicht sonderlich effizient ist, da der Computer viele, oft überflüssige, Abfragen durchführen muss.

Besseres Ziel: Lose Kopplung

  • Im Code werden keine konkreten Objekte benannt.

  • Die Objekte kommunizieren miteinander, (nur) wenn sie vorhanden sind. Dies geschieht über einen Benachrichtigungs-Mechanismus auf Basis von Events.

  • Vorteile sind:

    • Änderungen an der Szene erfordern keine Änderungen am Code (nachdem das Grundprinzip aufgesetzt wurde).

    • Das inhaltliche Gestalten der Szene wird von der Programmlogik getrennt, wodurch der Gestaltungsprozess viel einfacher und flexibler wird.

    • Mehrere Komponenten können parallel verwendet werden, ohne dass Code-Änderungen nötig sind (z.B. mehrere UIs).

    • Die unabhängigen Einzelteile (Objekte, UI-Elemente) lassen sich problemlos über mehrere Szenen verwenden oder als Prefab speichern, da keine gegenseiteigen Abhängigkeiten bestehen.

Lösungsansatz: Abstraktion

Um eine lose Kopplung zu realisieren, müssen wir zunächst überlegen, welche Eigenschaften verallgemeinert werden können und unseren Code darauf aufbauen.

Anhänge

Die hier gezeigten Lektionen sind eine Auswahl von Inhalten aus mehreren verschiedenen kostenpflichtigen Kursen. Um alle Inhalte zu sehen, müssen mehrere Kurse gekauft werden. Änderungen und Aktualisierungen der Kursinhalte werden auf dieser Seite möglicherweise nicht oder nicht sofort dargestellt. Die kostenpflichtigen Udemy-Kurse enthalten neben den Videos auch Übungen, Textartikel, weitere Materialien, sowie ein Support-Forum für Fragen. Vereinzelt kann eine Lektion im mehreren Kursen gleichzeitig enthalten sein. Wenn etwas unklar ist, stelle Deine Frage per E-Mail an rene@gamedev-profi.de .