Wenn wir an ein gemeinsames Spiel denken, spielt es keine Rolle, welche Art von Spiel wir spielen. Es ist sehr wahrscheinlich, dass wir einen Kameratyp benötigen. Zum Beispiel:
- Debug-Kamera: Mit Tastatur und Maus gesteuert, können wir uns an jedem Ort unserer Szene bewegen.
- Skriptkamera: Damit können wir die Kamera anweisen, sich auf einem bestimmten Pfad zu bewegen.
- Player Kamera.
- ...
Jeder dieser Kameratypen verfügt über eine eigene Aktualisierungsfunktion. Das einfachste (und schlechteste) System besteht darin, eine Kameramanager-Klasse mit einer allgemeinen Aktualisierungsfunktion und speziellen Aktualisierungsfunktionen für jeden Kameratyp zu haben. Innerhalb der generischen Aktualisierungsfunktion haben wir eine switch-Anweisung, die basierend auf dem Kameratyp die richtige Aktualisierungsfunktion aufruft.
Stattdessen habe ich mir einen anderen Ansatz überlegt: das Strategiemuster. Wir verschieben jedes Kameraverhalten (Aktualisierungsmethode) in eine geeignete Klasse, die eine gemeinsame Schnittstelle implementiert. Im Kameramanager haben wir ein Mitglied für diese Benutzeroberfläche, und wir können jedes gewünschte Verhalten dynamisch festlegen.
Was denkst du darüber? Welche anderen Systeme schlagen Sie mir vor? Vielen Dank.
Zusätzliche Infos: Es besteht die reale Möglichkeit, dass ich mehr als eine Kamera aktiv brauche, zum Beispiel für Reflexionen. Kurz gesagt, ich muss auch das berücksichtigen.