Eu fiz um codigo um pouco diferente, mas era para ter funcionado, não? Aparece aqui sempre a pontução atual como maxima.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class ControlaInterface : MonoBehaviour
{
private ControlaJogador scriptControlaJogador;
public Slider SliderVidaJogador;
public GameObject PainelGameOver;
public Text TextoTempoDeSobrevivencia;
public Text TempoPontuacaoMaxima;
private float tempoPontuacaoSalva;
void Start()
{
scriptControlaJogador = GameObject.FindWithTag("Jogador")
.GetComponent<ControlaJogador>();
SliderVidaJogador.maxValue = scriptControlaJogador.statusJogador.Vida;
AtualizaSliderVidaJogador();
tempoPontuacaoSalva = PlayerPrefs.GetFloat("PontuacaoMaxima");
}
public void AtualizaSliderVidaJogador()
{
SliderVidaJogador.value = scriptControlaJogador.statusJogador.Vida;
}
public void GameOver()
{
PainelGameOver.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);
}
public void Reiniciar()
{
SceneManager.LoadScene("Game");
}
void AjustarPontuacaoMaxima(int min, int sec)
{
int minuto, segundos;
if (Time.timeSinceLevelLoad > tempoPontuacaoSalva)
{
tempoPontuacaoSalva = Time.timeSinceLevelLoad;
PlayerPrefs.SetFloat("PontuacaoMaxima", tempoPontuacaoSalva);
minuto = min;
segundos = sec;
}
else
{
minuto= (int)(Time.timeSinceLevelLoad / 60);
segundos = (int)(Time.timeSinceLevelLoad % 60);
}
TempoPontuacaoMaxima.text =
string.Format("Seu melhor tempo é {0}min e {1}segundos.", minuto, segundos);
}
}