Menu
CoddyTech

Salvar um número

Parte da seção Criando jogos de verdade do Journey de Unity da Coddy. Lição 22 de 56.

Todos os campos começam com seus valores padrão quando o jogo é iniciado. Um jogador que coleta 40 gemas, sai do jogo e volta amanhã encontra a contagem de gemas em 0, porque sair encerra o jogo e tudo o que há nele. PlayerPrefs mantém valores pequenos no dispositivo do jogador entre as partidas. Cada valor é armazenado sob uma chave, uma string que você escolhe, com SetInt, SetFloat ou SetString:

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

Para ler um valor, chame o Get do mesmo tipo com a mesma chave. Uma chave que nunca foi salva é lida como 0, 0 ou uma string vazia; assim, na primeira partida de um jogador, esta saudação mostra um nome vazio e nível 0:

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

As chaves diferenciam maiúsculas de minúsculas: GetInt("levelreached") lê uma chave que nunca foi salva e retorna 0. Uma chave armazena um único tipo, então leia-a com o Get correspondente ao seu Set. Salve um valor quando ele mudar, não apenas quando o jogo terminar. O Unity grava PlayerPrefs no disco quando o jogo é encerrado normalmente, e PlayerPrefs.Save() os grava imediatamente, para que uma falha não os faça ser perdidos. Um campo static não é uma solução para isso: ele dura enquanto o jogo está em execução, e sair também encerra isso.

challenge icon

Desafio

Médio

O JumpCounter do Hopper conta seus saltos na tela, mas a contagem é um campo simples, então todo novo jogo começa novamente em Jumps: 0. Transforme-a em um total acumulado que continue de um jogo para outro:

  • Após cada salto, salve jumps com PlayerPrefs.SetInt usando a chave TotalJumps e grave-o no disco com PlayerPrefs.Save().
  • Em Start(), carregue o total salvo em jumps antes de o texto exibi-lo.

Pressione Play e salte algumas vezes; depois, pressione Stop e Play novamente: a contagem continua. Em seguida, Check.

Experimente você mesmo

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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Criando jogos de verdade