Menu
CoddyTech

Enregistrer les paramètres

Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 25 sur 56.

Un paramètre est choisi une fois et doit être retrouvé dans chaque partie suivante ; il doit donc être stocké dans PlayerPrefs. Au démarrage du jeu, charge le paramètre, applique-le à son contrôle pour que l’écran des paramètres l’affiche, puis applique-le au jeu. Quand le joueur modifie le contrôle, applique la nouvelle valeur et enregistre-la. Ce bouton à bascule (using UnityEngine.UI;) affiche ou masque le minuteur à l’écran et, puisque PlayerPrefs ne prend pas en charge les booléens, il stocke 1 pour activé et 0 pour désactivé :

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 transmet la nouvelle valeur du contrôle à l’écouteur : un bool pour un bouton à bascule, un float pour un curseur, dont la position est slider.value. Définir isOn ou value depuis le code modifie le contrôle comme le ferait un joueur ; ainsi, lorsque la valeur change, cela appelle aussi les écouteurs. C’est pourquoi l’écouteur est ajouté après le chargement : s’il était ajouté avant, il s’exécuterait à chaque démarrage et enregistrerait aussitôt la valeur chargée. SetIsOnWithoutNotify et SetValueWithoutNotify définissent la valeur d’un contrôle sans appeler d’écouteur.

La valeur par défaut détermine ce qu’obtient un nouveau joueur. GetInt("ShowTimer", 1) affiche le minuteur jusqu’à ce que le joueur le désactive ; une valeur par défaut de 0 le masquerait pour tous ceux qui n’ont jamais ouvert les paramètres. Un paramètre de type float se charge de la même manière avec PlayerPrefs.GetFloat(key, defaultValue) : GetFloat("MouseSensitivity", 1.5f) donne la valeur 1.5 à un nouveau joueur.

challenge icon

Défi

Moyen

L’écran Settings comporte un curseur de volume allant de 0 à 1 et un texte qui l’affiche en pourcentage. Faites du volume un paramètre enregistré sous la clé Volume :

  • Un nouveau joueur commence à 0.8, affiché sous la forme Volume: 80%.
  • Le volume s’applique à l’ensemble du jeu via AudioListener.volume, le volume principal de Unity, de 0 (silencieux) à 1 (maximum), qui ajuste tous les sons du jeu.
  • Au démarrage du jeu, le volume enregistré est appliqué, et le curseur ainsi que le texte l’affichent.
  • Lorsque le joueur déplace le curseur, le nouveau volume est appliqué, le texte est mis à jour et le volume est enregistré.

ShowVolume(float volume) écrit déjà le texte.

Appuyez sur Play et déplacez le curseur, puis sur Stop et de nouveau sur Play, puis sur Check.

Essayez vous-même

using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class VolumeSetting : MonoBehaviour
{
    public Slider slider;
    public TMP_Text volumeText;

    void Start()
    {
        // Charger le volume enregistré, l’appliquer et l’afficher, puis surveiller le slider
    }

    void OnVolumeChanged(float value)
    {
        // Appliquer, afficher et enregistrer le nouveau volume
    }

    void ShowVolume(float volume)
    {
        volumeText.text = "Volume: " + Mathf.RoundToInt(volume * 100) + "%";
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Créer de vrais jeux