Sempre que eu faço o teste do jogo, ele não salva o resultado, ele sempre coloca o resultado atual como se fosse o melhor resultado, mesmo usando o playerprefs. Primeiro eu achei que tinha errado algo no set/get.
Mas eles estão corretos e mesmo assim continuam gravando o resultado errado.
Segue o código:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement;
public class Script_Interface_Controle : MonoBehaviour { private Script_Jogador scriptJogador; public Slider SliderVidaJogador; public GameObject PainelDeGameOver; public Text TextoTempoSobrevivencia; public Text TextoPontuacaoMaxima; private float tempoPontuacaoSalvo;
GameObject Jogador;
// Start is called before the first frame update
void Start()
{
Jogador = GameObject.FindGameObjectWithTag("Jogador");
scriptJogador = Jogador.GetComponent<Script_Jogador>();
//Dando valor incial de barra de vida do Jogador
SliderVidaJogador.maxValue = scriptJogador.status.Vida;
AtualizarSliderVidaJogador();
Time.timeScale = 1;
tempoPontuacaoSalvo = PlayerPrefs.GetFloat("PontuacaoMaxima");
}
// Update is called once per frame
void Update()
{
}
public void AtualizarSliderVidaJogador()
{
SliderVidaJogador.value = scriptJogador.status.Vida;
}
public void GameOver()
{
PainelDeGameOver.SetActive(true);
Time.timeScale = 0;
int minutos = (int) Time.timeSinceLevelLoad / 60;
int segundos = (int)Time.timeSinceLevelLoad % 60;
TextoTempoSobrevivencia.text = "Você sobreviveu por:" + minutos + "min e " + segundos + "seg! " + "Tente outra vez!!!";
AjustarPontuacaoMaxima(minutos,segundos);
}
void AjustarPontuacaoMaxima(int min, int seg)
{
if (Time.timeSinceLevelLoad > tempoPontuacaoSalvo)
{
tempoPontuacaoSalvo = Time.timeSinceLevelLoad;
TextoPontuacaoMaxima.text = string.Format("Seu melhor tempo é: {0}min e {1}seg!", min,seg);
PlayerPrefs.SetFloat("PontuacaoMaxima", tempoPontuacaoSalvo);
}
if (TextoPontuacaoMaxima.text == "")
{
min = (int)Time.timeSinceLevelLoad / 60;
seg = (int)Time.timeSinceLevelLoad % 60;
TextoPontuacaoMaxima.text = string.Format("Seu melhor tempo é: {0}min e {1}seg!", min, seg);
}
}
public void Reiniciar()
{
SceneManager.LoadScene("Main_Game");
}
}