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.
Défi
MoyenL’é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) + "%";
}
}
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
1Texte à l’écran
Canvas et texteAfficher le scoreFormater les nombresUn compte à reboursRécapitulatif : compteur de vitesse4Scènes et niveaux
Charger une scèneRedémarrer le niveauNiveau suivantConserver entre les scènesRécapitulatif : sélection du niveau7Contrôle du temps
Mettre en pause avec timeScaleRalentiTemps non mis à l’échelleRécapitulatif : Bullet Time10Projet : jeu de plateforme en 3D
Le parcoursPlateformes mobiles2Boutons et écrans
Boutons et onClickLambdasRelier les éléments dans l’InspectorActiver et désactiver les panneauxBarres de santéRécapitulatif : boutique d’améliorations5Sauvegarder avec PlayerPrefs
Enregistrer un nombreCharger avec une valeur par défautMeilleur scoreEnregistrer les paramètresRécapitulatif : les pièces à la banque