2016-04-20 22 views
1

Ich verwende derzeit eine Schaltfläche im Hauptmenü als eine Umschaltfunktion, die einen booleschen Wert auf wahr oder falsch setzt. Es ist auf True initialisiert und wenn es auf false gesetzt ist, wird kein Sound abgespielt.Wie implementiert man einen Sound-Schalter in libgdx richtig?

Das Problem ist jedoch, dass, wenn Sie im Hauptmenü die Umschaltung auf "false" einstellen und die Bildschirme wechseln, um den Wiedergabebildschirm zu sagen und dann wieder zum Hauptmenü zurückzukehren, wird es wieder auf "True" gesetzt, weil ein neuer Bildschirm ist verwendet werden.

Welche Möglichkeiten gibt es?

Antwort

1

Sie müssen den Wert der Einstellung in einem booleschen Feld einer Klasseninstanz speichern, die Sie ständig verwenden. Die Schaltfläche selbst ist ein Ansichtsobjekt - verlassen Sie sich nicht darauf, um Ihren Status zu speichern.

Zum Beispiel, erstellen Sie eine Klasse namens UserSettings und haben einen soundEnabled Boolean darin. Ihre Spielinstanz kann einen Verweis auf eine Instanz von UserSettings beibehalten, um sie an alle verschiedenen Bildschirme zu übergeben. Wenn das MenuScreen initialisiert wird, wird der boolesche Wert soundEnabled angezeigt und der initiale Status der Schaltfläche festgelegt. Und die Schaltfläche verfügt über einen ChangeListener, der den Booleschen Wert im UserSettings-Objekt entsprechend ändert.

Dann wird auf dem Wiedergabebildschirm dasselbe UserSettings-Objekt übergeben, und damit wird bestimmt, ob der Sound eingeschaltet sein soll.

Außerdem können Sie das UserSettings-Objekt mithilfe der Json-Klasse in einer Datei (oder Voreinstellung) speichern, und dann kann Ihr Spiel das Spiel aus der Datei (falls vorhanden) laden, wenn das Spiel erneut geöffnet wird. Auf diese Weise werden die Präferenzen der Benutzer von Sitzung zu Sitzung gespeichert.

+0

Ja, das macht Sinn. Danke für die Antwort! –

Verwandte Themen