A grande maioria dos jogos tem a necessidade de guardar e manipular dados gerados ao longo da gameplay.
E podem ser variados dados como: quantia de moedas coletadas, fases do jogo, equipamentos desbloqueados, etc.
E na Unity existem diversas maneiras de salvar esses dados, como o famoso Player Prefs.
O que é o Player Prefs?
O Player Prefs é uma classe da Unity feita exclusivamente para guardar alguns tipos de dados de maneira rápida.
E ele permite você salvar dados e recupera-los quando for necessário em seu código, sendo muito prático para nós.
Mas, precisamos lembrar que ele não é uma fonte tão segura, e é aconselhável salvar apenas dados da gameplay atual.
Pois, esses dados são guardados no registro do Windows, podendo ser corrompidos ou até perdidos.
Por exemplo, o usuário pode formatar a maquina, ou alterar manualmente esses dados, sendo assim inseguros.
Porém, para salvar dados que serão necessários durante a própria gameplay o Player Prefs já atende muito bem.
Quais tipos de dados posso salvar?
Com o player prefs podemos guardar 3 tipos de valores: Strings, Ints e floats, com um comando específico para cada.
E basicamente você precisará de um comando para salvar seu dado e gerar a chave de acesso dele, no registro.
E um outro comando que vai acessar essa chave gravada no registro do Windows ,e puxar o seu valor armazenado.
Porém, você deve ter percebido que o Player Prefs não salva valores boleanos, e de fato é verdade.
Mas, deixaremos uma dica simples e que funciona muito bem: você pode usar o tipo Int, para valores bools também.
Pois, com um pouquinho de lógica, você pode salvar 1 para true, e 0 para false, driblando essa limitação.
Como usar o Player Prefs?
Primeiro precisamos gravar os valores, acessando a classe: PlayerPrefs e depois o tipo que desejamos salvar.
E o SetInt é para Ints, SetString para Strings e SetFloat para valores Floats, definindo seu tipo de valor.
E depois, dentro do parenteses passamos o nome da Chave e após a vírgula o valor que ela irá guardar.
E dessa forma você já salvou seus valores no registro, como no exemplo da imagem ao lado.
Mas, agora vem a segunda parte, onde precisamos recuperar esses valores salvos e utilizar em nosso game.
E para isso você cria uma variável do tipo do valor que você deseja recuperar, String, Int ou float.
E em seguida ela recebe o valor usando: PlayerPrefs.GetInt (Ints), PlayerPrefs.GetString (Strings), PlayerPrefs.GetFloat (Floats).
E por fim, dentro dos parênteses e aspas você passa o nome da chave que deseja acessar e recuperar o valor.
Pois, seguindo o exemplo da imagem ao lado, você conseguira recuperar rapidamente o valor salvo.
Outros métodos importantes
Podem ser usados para comparação:
Existem algumas outras funções bem úteis e que vale a pena você conhecer, pois, irão te ajudar.
E podemos também utilizar uma chave salva para comparar seu valor armazenado, diretamente em um if.
E dessa forma não precisamos necessariamente armazenar o valor da chave em alguma variável.
HasKey – verifica se uma chave existe:
Esse comando verifica se determinada chave existe no registro do Windows.
E para usa-lo basta acessar o PlayerPrefs.HasKey (“Nome da chave aqui”), e passar o nome da chave desejada.
E esse comando é muito útil para evitar bugs, caso tente puxar um valor de uma chave não criada ainda.
DeleteAll – remove todos os registros existentes:
Esse comando deleta todas as chaves que foram criadas no registro do Windows.
E para usa-lo basta acessar a função PlayerPrefs.DeleteAll(), e assim serão apagadas todas estas chaves.
E esse comando é muito útil caso o jogador tenha a necessidade de resetar seu progresso durante a gameplay.
DeleteKey – remove apenas a chave informada:
Já este comando diferente do DeleteAll, deleta apenas uma chave específica que você desejar.
E para isso basta acessar o PlayerPrefs.DeleteKey(“Nome da chave aqui”), e passar o nome da chave desejada.
Como podemos ver o PlayerPrefs é muito útil e prático para salvar dados em nossos jogos.
Mas, vale a pena lembrar que não é recomendado salvar dados extremamente cruciais para seu jogo.
Pois, para isso existem outras formas mais indicadas como o salvamento Binário ou até pelo ScriptableObject.
Deixaremos um vídeo abaixo do uso do PlayerPrefs, na prática:
Seja o primeiro a comentar.