Enregistrer un nombre
Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 22 sur 56.
Chaque champ prend 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 nombre 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 la méthode 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 quand elle change, pas seulement à la fin du jeu. Unity écrit 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 cela : il persiste tant que le jeu est en cours d’exécution, et quitter met également fin à cela.
Défi
MoyenLe JumpCounter du Hopper compte ses sauts à l’écran, mais le compteur est un simple champ, donc chaque nouvelle partie recommence à Jumps: 0. Fais-en un total cumulé qui se conserve d’une partie à l’autre :
- Après chaque saut, enregistre
jumpsavecPlayerPrefs.SetIntsous la cléTotalJumps, puis écris-le sur le disque avecPlayerPrefs.Save(). - Dans
Start(), charge le total enregistré dansjumpsavant que le texte ne l’affiche.
Appuie sur Play et saute quelques fois, puis appuie sur Stop et à nouveau sur Play : le compteur continue. Ensuite, Check.
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;
}
}
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