Menu
CoddyTech

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.

challenge icon

Défi

Moyen

Le 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 jumps avec PlayerPrefs.SetInt sous la clé TotalJumps, puis écris-le sur le disque avec PlayerPrefs.Save().
  • Dans Start(), charge le total enregistré dans jumps avant 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;
    }
}
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