Menu
CoddyTech

Charger avec une valeur par défaut

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

Une clé qui n’a jamais été enregistrée renvoie 0, et 0 n’est pas une bonne valeur de départ pour certaines données. Dans un jeu de course, le joueur peut choisir le nombre d’adversaires contrôlés par l’ordinateur qui participent à une course, et un nouveau joueur devrait affronter 3 adversaires. Chaque appel à Get prend un deuxième argument, la valeur par défaut, qu’il renvoie lorsque la clé est introuvable :

int rivals = PlayerPrefs.GetInt("Rivals", 3);
string driver = PlayerPrefs.GetString("Driver", "Rookie");

Une fois que le joueur a enregistré 0 adversaire pour s’entraîner seul, GetInt("Rivals", 3) renvoie 0 : la valeur par défaut ne remplace qu’une clé manquante. C’est pourquoi if (rivals == 0) rivals = 3; est une mauvaise façon de définir une valeur par défaut. Cette instruction ne permet pas de distinguer un 0 enregistré de l’absence de valeur enregistrée, et rétablit 3 adversaires dans chaque course d’entraînement.

PlayerPrefs.HasKey(key) indique si une clé a déjà été enregistrée, quelle que soit sa valeur ; cela permet donc de distinguer une première partie des suivantes. Ce jeu souhaite la bienvenue à un nouveau pilote :

void Start()
{
    if (!PlayerPrefs.HasKey("Driver"))
    {
        Debug.Log("First race! Pick a name in the garage.");
    }
    string driver = PlayerPrefs.GetString("Driver", "Rookie");
    Debug.Log("Driver: " + driver);
}

Appelez HasKey avant tout code qui enregistre la clé : dès le premier enregistrement, la méthode renvoie true jusqu’à ce que la clé soit supprimée avec PlayerPrefs.DeleteKey.

challenge icon

Défi

Moyen

Offre 5 crédits gratuits et un message de bienvenue à un nouveau joueur.

  1. Dans Start(), charge les crédits avec une valeur par défaut : credits = PlayerPrefs.GetInt("Credits", 5);.
  2. Remplace welcomeText.SetActive(false); par welcomeText.SetActive(!PlayerPrefs.HasKey("Credits"));.

Clique sur « Jouer » et joue à un jeu, puis clique sur Arrêter et sur « Jouer » : le message de bienvenue a disparu. Puis clique sur « Vérifier ».

Essayez vous-même

using UnityEngine;
using TMPro;

public class ArcadeCredits : MonoBehaviour
{
    public TMP_Text creditsText;
    public GameObject welcomeText;
    private int credits;

    void Start()
    {
        credits = PlayerPrefs.GetInt("Credits");
        welcomeText.SetActive(false);
        ShowCredits();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && credits > 0)
        {
            credits--;
            PlayerPrefs.SetInt("Credits", credits);
            PlayerPrefs.Save();
            ShowCredits();
        }
    }

    void ShowCredits()
    {
        creditsText.text = "Credits: " + credits;
    }
}

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

Entraînez-vous par vous-même : Playground Unity