Ich baue gerade mein LibGDX-Projekt um, um eine ECS-Struktur unter Verwendung von Ashley zu passen. Im Moment habe ich das folgende System-Struktur haben:Daten zwischen Systemen in ECS teilen (Ashley)
- InputSystem (Griffe Spieler-Input)
- PhysicSystem (Geschwindigkeit Einheiten gilt, tut Kollisionserkennung und verschiebt sie)
- Kamerasystem (passt die Kamera die Kamera-Fokus)
- RenderingSystem (transformiert die Spritebatch mit der Kamera-Informationen und zieht alle Einheiten)
Jetzt weiß ich, dass jedes System ist su psposed enthält die gesamte Logik, die es benötigt, und ist eingekapselt, um die Kompliziertheit zu reduzieren. Aber ich brauche die Kamera im CameraSystem, um es anzupassen, ich brauche es im RenderSystem, um die Kamera-Transformation anzuwenden, und ich brauche es im InputSystem, um zu sehen, wohin die Maus zeigt. Wie lösen Sie das mit dem ECS-Ansatz? Können Systeme miteinander kommunizieren? Sollte ich nur ein Singleton namens "SharedData" verwenden, wo ich all die Dinge, die mehrere Systeme benötigen, ablegen? Scheint ein bisschen hässlich für mich.
Vielen Dank im Voraus :)
Ich verwende normalerweise Vis-Runtime für ECS in meinem Spiel. In vis-Laufzeit wird ein System in ein anderes System injiziert, so dass man leicht auf ein anderes System zugreifen kann. Gemäß mir können Sie CameraSystem mit anderem System teilen. – Aryan