Um Szenen einzubauen, muss man erstmal verstehen, wie diese in der Engine gehandhabt werden. Ein implementiertes Beispielprojekt findet sich bei den Samples:
DefaultScene
Die Engine selbst startet immer mit einer DefaultScene, welche alle Einstellungen aus der Engine übernimmt.
Modul
Will man Szenen implementieren, so muss man bei der Engine ein Modul
anmelden. Dieses erbt von Module()
Dieses Modul konfiguriert die Hauptszene, welche beim Starten angezeigt wird und meldet alle Szenen an. Wenn zu einer Szene gewechselt wird, baut sich immer eine neue Szene auf. Es werden also alle Objekte neu instanziiert.
Szenen
Für jede Szene wird eine eigene Klasse benötigt. Bei 2 Szenen also z.B. MyScene1.kt und MyScene2.kt. Diese besitzen überschreibbare Methoden (z.B. viewWillLoad()
, siehe hier und hier), um die Szenen zu konfigurieren.
Controller
Da die Szenen selbst das Controller-Interface imlementieren, können Sie auch Tastatur- und Mauseingaben empfangen, um so zum Beispiel einen [Szenenwechsel]( changeSceneTo
Details
Sicher ist aufgefallen, dass hier nicht mit Objekten gearbeitet wirdm sondern mit Klassen. Das wird insbesondere klar, wenn man sich den Code für den Szenenwechsel ansieht. Anstatt
changeSceneTo(myScene2)
schreiben wir
changeSceneTo<MyScene2>()
Wir injizieren kein instanziiertes Objekt als Szene, sondern eine Klasse. Anhand dieser wird dann von der Engine ein Objekt selbst generiert. Man nennt das Dependency Injection.