Einstellungen speichern
Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 25 von 56.
Eine Einstellung wird einmal ausgewählt und soll in jedem folgenden Spiel wieder verfügbar sein, deshalb gehört sie in PlayerPrefs. Wenn das Spiel startet, lade die Einstellung, setze sie auf das zugehörige Steuerelement, damit der Einstellungsbildschirm sie anzeigt, und wende sie auf das Spiel an. Wenn der Spieler das Steuerelement ändert, wende den neuen Wert an und speichere ihn. Dieser Schalter (using UnityEngine.UI;) zeigt den Timer auf dem Bildschirm an oder blendet ihn aus. Da PlayerPrefs keinen bool-Wert unterstützt, speichert er 1 für ein und 0 für aus:
public Toggle timerToggle;
public GameObject timerText;
void Start()
{
bool show = PlayerPrefs.GetInt("ShowTimer", 1) == 1;
timerToggle.isOn = show;
timerText.SetActive(show);
timerToggle.onValueChanged.AddListener(OnTimerToggled);
}
void OnTimerToggled(bool on)
{
timerText.SetActive(on);
PlayerPrefs.SetInt("ShowTimer", on ? 1 : 0);
PlayerPrefs.Save();
}onValueChanged übergibt dem Listener den neuen Wert des Steuerelements: einen bool-Wert für einen Toggle, einen float-Wert für einen Slider, dessen Position slider.value ist. Wenn du isOn oder value im Code festlegst, ändert sich das Steuerelement genauso, wie wenn ein Spieler es bedient. Ändert sich dadurch der Wert, werden auch die Listener aufgerufen. Deshalb wird der Listener erst nach dem Laden hinzugefügt: Würde er zuerst hinzugefügt, würde er bei jedem Start ausgeführt und den geladenen Wert sofort wieder speichern. SetIsOnWithoutNotify und SetValueWithoutNotify setzen ein Steuerelement, ohne einen Listener aufzurufen.
Der Standardwert legt fest, was ein neuer Spieler erhält. GetInt("ShowTimer", 1) zeigt den Timer an, bis der Spieler ihn ausschaltet; ein Standardwert von 0 würde ihn für alle ausblenden, die die Einstellungen nie geöffnet haben. Eine Float-Einstellung wird auf dieselbe Weise geladen, mit PlayerPrefs.GetFloat(key, defaultValue): GetFloat("MouseSensitivity", 1.5f) gibt einem neuen Spieler den Wert 1.5.
Aufgabe
MittelDer Einstellungsbildschirm hat einen Lautstärkeregler von 0 bis 1 und einen Text, der die Lautstärke als Prozentsatz anzeigt. Speichere die Lautstärke als Einstellung unter dem Schlüssel Volume:
- Ein neuer Spieler startet mit 0.8, angezeigt als Volume: 80%.
- Die Lautstärke gilt für das gesamte Spiel über
AudioListener.volume, Unitys Master-Lautstärke von 0 (stumm) bis 1 (volle Lautstärke), die jeden Sound im Spiel skaliert. - Beim Start des Spiels wird die gespeicherte Lautstärke angewendet, und der Regler sowie der Text zeigen sie an.
- Wenn der Spieler den Regler bewegt, wird die neue Lautstärke angewendet, der Text aktualisiert sich und die Lautstärke wird gespeichert.
ShowVolume(float volume) schreibt den Text bereits.
Drücke Play und bewege den Regler, dann Stop und erneut Play, dann Check.
Probier es selbst
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class VolumeSetting : MonoBehaviour
{
public Slider slider;
public TMP_Text volumeText;
void Start()
{
// Lade die gespeicherte Lautstärke, wende sie an und zeige sie an. Reagiere anschließend auf Änderungen am slider.
}
void OnVolumeChanged(float value)
{
// Wende die neue Lautstärke an, zeige sie an und speichere sie.
}
void ShowVolume(float volume)
{
volumeText.text = "Volume: " + Mathf.RoundToInt(volume * 100) + "%";
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Echte Spiele entwickeln
1Text auf dem Bildschirm
Canvas und TextPunktestand anzeigenZahlen formatierenEin Countdown-TimerRückblick: Tachometer4Szenen und Level
Eine Szene ladenDas Level neu startenNächstes LevelZwischen Szenen beibehaltenRückblick: Levelauswahl10Projekt: 3D-Plattformer
Der ParcoursBewegliche Plattformen2Buttons und Bildschirme
Buttons und onClickLambdasVerknüpfungen im InspectorPanels ein- und ausblendenGesundheitsbalkenRückblick: Upgrade-Shop5Speichern mit PlayerPrefs
Eine Zahl speichernMit einem Standardwert ladenHöchstpunktzahlEinstellungen speichernRückblick: Münzen auf der Bank