Olá, tudo bem? Segui essa aula até o final, mas esotu com um problema:
Até o ponto em que a pontuação máxima era atualizada TODA vez, tudo estava funcionando, mas apartir do momento que comecei a colocar a pontuação máxima para aparecer mesmo caso a pontuação fosse menor (usando o PlayerPrefs), agora só mostra a pontuação máxima da primeira vez que executo o jogo.
Para testar isso fiz um primeiro teste e morri em 13 segundos. Ele mostrou que a pontuação máxima era 13 segundos. Depois, quando sobrevivi por 20, ele não atualizou a pontuiação máxima. (Nem utilizando o botão de jogar novamente e nem tirando o play e dando play novamente na unity).
O código está assim:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class ControlaInterface : MonoBehaviour
{
private ControladorJogador scriptControladorJogador;
public Slider sliderVidaJogador;
public GameObject painelGameOver;
public Text textoTempoSobrevivencia;
public Text textoPontuacaoMaxima;
private float tempoPontuacaoSalva;
// Start is called before the first frame update
void Start()
{
scriptControladorJogador = GameObject.FindWithTag("Player").GetComponent<ControladorJogador>();
sliderVidaJogador.maxValue = scriptControladorJogador.meuStatusJogador.Vida;
AtualizarSliderVidaJogador();
Time.timeScale = 1;
tempoPontuacaoSalva = PlayerPrefs.GetFloat("PontuacaoMaxima");
}
public void AtualizarSliderVidaJogador()
{
sliderVidaJogador.value = scriptControladorJogador.meuStatusJogador.Vida;
}
public void GameOver()
{
Time.timeScale = 0;
painelGameOver.SetActive(true);
int minutos = (int)(Time.timeSinceLevelLoad / 60);
int segundos = (int)(Time.timeSinceLevelLoad % 60);
textoTempoSobrevivencia.text = "Voce sobreviveu por " + minutos + " minutos e " + segundos + " segundos.";
AjustarPontuacaoMaxima(minutos, segundos);
}
void AjustarPontuacaoMaxima(int min, int seg)
{
if(Time.timeSinceLevelLoad > tempoPontuacaoSalva)
{
tempoPontuacaoSalva = Time.timeSinceLevelLoad;
textoPontuacaoMaxima.text = string.Format("Seu melhor tempo é {0} minutos e {1} segundos.", min, seg);
PlayerPrefs.SetFloat("PontuacaoMaxima", tempoPontuacaoSalva);
}
if (textoPontuacaoMaxima.text == "")
{
min = (int)tempoPontuacaoSalva / 60;
seg = (int)tempoPontuacaoSalva % 60;
textoPontuacaoMaxima.text = string.Format("Seu melhor tempo é {0} minutos e {1} segundos.", min, seg);
}
}
public void Reiniciar()
{
SceneManager.LoadScene("Game");
}
}