Menu
CoddyTech

Guardar un número

Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 22 de 56.

Cada campo comienza con su valor predeterminado cuando se inicia el juego. Un jugador que recoge 40 gemas, sale y vuelve mañana encuentra el contador de gemas en 0, porque salir termina el juego y todo lo que hay en él. PlayerPrefs conserva valores pequeños en el dispositivo del jugador entre partidas. Cada valor se almacena bajo una clave, una cadena que eliges, con SetInt, SetFloat o SetString:

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

Para volver a leer un valor, llama al Get del mismo tipo con la misma clave. Una clave que nunca se guardó se lee como 0, 0 o una cadena vacía, así que en la primera partida de un jugador, este saludo muestra un nombre vacío y el nivel 0:

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

Las claves distinguen entre mayúsculas y minúsculas: GetInt("levelreached") lee una clave que nunca se guardó y devuelve 0. Una clave contiene un solo tipo, así que léela con el Get que coincide con su Set. Guarda un valor cuando cambie, no solo cuando termine el juego. Unity escribe PlayerPrefs en el disco cuando el juego se cierra normalmente, y PlayerPrefs.Save() los escribe de inmediato, así que un fallo no puede hacer que se pierdan. Un campo static no es una forma de evitarlo: dura mientras el juego está en ejecución, y salir también termina eso.

challenge icon

Desafío

Intermedio

JumpCounter del Hopper cuenta sus saltos en pantalla, pero el contador es un campo normal, así que cada partida nueva empieza otra vez en Jumps: 0. Haz que sea un total acumulado que se conserve de una partida a otra:

  • Después de cada salto, guarda jumps con PlayerPrefs.SetInt usando la clave TotalJumps y escríbelo en el disco con PlayerPrefs.Save().
  • En Start(), carga el total guardado en jumps antes de que el texto lo muestre.

Pulsa Play y salta unas cuantas veces; después, pulsa Stop y Play otra vez: el contador continúa. Después, pulsa Check.

Pruébalo tú mismo

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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Creación de juegos reales