Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Código ajustado PontuacaoMaxima!

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.

1 resposta
solução!
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");
    }
}