Menu
CoddyTech

Salvare un numero

Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 22 di 56.

Ogni campo parte dal valore predefinito quando il gioco inizia. Un giocatore che raccoglie 40 gemme, esce e torna domani troverà il conteggio delle gemme a 0, perché uscire termina il gioco e tutto ciò che contiene. PlayerPrefs conserva piccoli valori sul dispositivo del giocatore tra una partita e l'altra. Ogni valore viene memorizzato con una chiave, una stringa che scegli tu, usando SetInt, SetFloat o SetString:

PlayerPrefs.SetString("PlayerName", "Robin");
PlayerPrefs.SetInt("LevelReached", 4);
PlayerPrefs.SetFloat("HoursPlayed", 2.5f);
PlayerPrefs.Save();

Per rileggere un valore, chiama il Get dello stesso tipo con la stessa chiave. Una chiave che non è mai stata salvata viene letta come 0, 0 o una stringa vuota, quindi alla prima partita del giocatore questo saluto mostra un nome vuoto e il livello 0:

void Start()
{
    string player = PlayerPrefs.GetString("PlayerName");
    int level = PlayerPrefs.GetInt("LevelReached");
    Debug.Log(player + " is on level " + level);
}

Le chiavi distinguono tra maiuscole e minuscole: GetInt("levelreached") legge una chiave che non è mai stata salvata e restituisce 0. Una chiave contiene un solo tipo, quindi leggila con il Get che corrisponde al suo Set. Salva un valore quando cambia, non solo quando termina il gioco. Unity scrive PlayerPrefs su disco quando il gioco viene chiuso normalmente, e PlayerPrefs.Save() li scrive subito, così un arresto anomalo non può farli perdere. Un campo static non è una soluzione: dura quanto il gioco è in esecuzione, e anche questo finisce quando esci.

challenge icon

Sfida

Medio

Il JumpCounter della Tramplina conta i suoi salti sullo schermo, ma il conteggio è un semplice campo, quindi ogni nuova partita ricomincia da Jumps: 0. Rendilo un totale cumulativo che prosegue da una partita all'altra:

  • Dopo ogni salto, salva jumps con PlayerPrefs.SetInt usando la chiave TotalJumps e scrivilo su disco con PlayerPrefs.Save().
  • In Start(), carica il totale salvato in jumps prima che il testo lo mostri.

Premi Play e salta alcune volte, poi premi Stop e di nuovo Play: il conteggio prosegue. Poi premi Check.

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Creare veri giochi