Enregistrer un nombre
Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 22 sur 60.
Chaque champ reprend sa valeur par défaut au démarrage du jeu. Un joueur qui collecte 40 gemmes, quitte le jeu et revient le lendemain retrouve le compteur de gemmes à 0, car quitter met fin au jeu et à tout ce qu'il contient. PlayerPrefs conserve de petites valeurs sur l'appareil du joueur entre les parties. Chaque valeur est stockée sous une clé, une chaîne que tu choisis, avec SetInt, SetFloat ou SetString :
PlayerPrefs.SetString("PlayerName", "Robin");
PlayerPrefs.SetInt("LevelReached", 4);
PlayerPrefs.SetFloat("HoursPlayed", 2.5f);
PlayerPrefs.Save();Pour relire une valeur, appelle le Get du même type avec la même clé. Une clé qui n'a jamais été enregistrée renvoie 0, 0 ou une chaîne vide ; lors de la première partie d'un joueur, ce message de bienvenue affiche donc un nom vide et le niveau 0 :
void Start()
{
string player = PlayerPrefs.GetString("PlayerName");
int level = PlayerPrefs.GetInt("LevelReached");
Debug.Log(player + " is on level " + level);
}Les clés sont sensibles à la casse : GetInt("levelreached") lit une clé qui n'a jamais été enregistrée et renvoie 0. Une clé contient une seule valeur d'un type donné ; lis-la donc avec le Get correspondant à son Set. Enregistre une valeur lorsqu'elle change, et pas seulement à la fin du jeu. Unity écrit les PlayerPrefs sur le disque lorsque le jeu se ferme normalement, et PlayerPrefs.Save() les écrit immédiatement, afin qu'un plantage ne puisse pas les faire perdre. Un champ static ne permet pas de contourner ce problème : il dure aussi longtemps que le jeu est en cours d'exécution, et quitter y met également fin.
Défi
MoyenFais du nombre de sauts un total à vie, enregistré entre les parties.
- Dans
Update(), aprèsjumps++;, ajoutePlayerPrefs.SetInt("TotalJumps", jumps);etPlayerPrefs.Save();. - Dans
Start(), au-dessus deShowJumps();, charge-le :jumps = PlayerPrefs.GetInt("TotalJumps");.
Appuie sur « Jouer » et saute, puis sur Stop et de nouveau sur « Jouer » : le compteur continue. Puis clique sur « Vérifier ».
Essayez vous-même
using UnityEngine;
using TMPro;
public class JumpCounter : MonoBehaviour
{
public TMP_Text jumpsText;
public float hop = 5f;
private Rigidbody rb;
private int jumps;
void Start()
{
rb = GetComponent<Rigidbody>();
ShowJumps();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
rb.linearVelocity = Vector3.up * hop;
jumps++;
ShowJumps();
}
}
void ShowJumps()
{
jumpsText.text = "Jumps: " + jumps;
}
}
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 niveau2Boutons 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 banqueEntraînez-vous par vous-même : Playground Unity