O texto de pontuação máxima estava sendo salvo apenas na primeira vez, se isso também aconteceu com você, segue o código atualizado e sem bugs.
O texto de pontuação máxima estava sendo salvo apenas na primeira vez, se isso também aconteceu com você, segue o código atualizado e sem bugs.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class ControlaInterface : MonoBehaviour
{
private ControlGamer scriptControlGamer;
public Slider SliderVidaJogador;
public GameObject PainelDeGameOver;
public Text TextoTempoDeSobrevivencia;
public Text TextoPontuacaoMaxima;
private float tempoPontuacaoSalvo;
void Start()
{
scriptControlGamer = GameObject.FindWithTag("Jogador").GetComponent<ControlGamer>();
SliderVidaJogador.maxValue = scriptControlGamer.statusJogador.Vida;
AtualizarSliderVidaJogador();
Time.timeScale = 1;
// Carrega a pontuação máxima salva e atualiza o texto da pontuação máxima
tempoPontuacaoSalvo = PlayerPrefs.GetFloat("PontuacaoMaxima", 0); // Usa 0 como valor padrão se não houver valor salvo
AtualizaTextoPontuacaoMaxima(tempoPontuacaoSalvo);
}
public void AtualizarSliderVidaJogador()
{
SliderVidaJogador.value = scriptControlGamer.statusJogador.Vida;
}
public void GameOver()
{
PainelDeGameOver.SetActive(true);
Time.timeScale = 0;
int minutos = (int)(Time.timeSinceLevelLoad / 60);
int segundos = (int)(Time.timeSinceLevelLoad % 60);
TextoTempoDeSobrevivencia.text = "Você sobreviveu por " + minutos + " minutos e " + segundos + " segundos.";
AjustarPontuacaoMaxima(minutos, segundos);
}
void AjustarPontuacaoMaxima(int min, int seg)
{
float tempoAtual = Time.timeSinceLevelLoad;
if(tempoAtual > tempoPontuacaoSalvo)
{
tempoPontuacaoSalvo = tempoAtual;
PlayerPrefs.SetFloat("PontuacaoMaxima", tempoPontuacaoSalvo);
PlayerPrefs.Save(); // Garante que a pontuação é salva imediatamente
}
AtualizaTextoPontuacaoMaxima(tempoPontuacaoSalvo);
}
void AtualizaTextoPontuacaoMaxima(float tempo)
{
int min = (int)tempo / 60;
int seg = (int)tempo % 60;
TextoPontuacaoMaxima.text = string.Format("Seu melhor tempo é {0} minutos e {1} segundos.", min, seg);
}
public void Reiniciar()
{
SceneManager.LoadScene("cenaprincipal");
}
}