5
respostas

[Dúvida] Pontuação máxima não salva na web

A pontuação máxima salva normalmente quando rodo o jogo na unity, mas upei o jogo no site itch.io e não salva a pontuação. Não sei onde poderia ser o erro.

5 respostas

Oi, André, tudo bem?

Você tem o link do seu itch.io pra gente dar uma olhada?

https://carpinelli82.itch.io/jogo-zumbi-v02 SenhaTesteJogo

Blz, como tá o código que da pontuação? Pode colar as partes importantes do player, etc aqui?

Colei os scripts de controlar interface e jogador, se precisar de mais algum avisa que eu colo também, mas acho que copiei tudo certinho das aulas, não dá nenhum erro na hora de rodar na unity, só na web mesmo.

public class ControlaInterface : MonoBehaviour{
    private ControlaJogador scriptControlaJogador;
    public Slider SliderVidaJogador;
    public GameObject PainelDeGameOver;
    public Text TextoTempoDeSobrevivencia;
    public Text TextoPontuacaoMaxima;
    private float tempoPontuacaoSalvo;

    void Start(){
        scriptControlaJogador = GameObject.FindWithTag("Jogador").GetComponent<ControlaJogador>();
        SliderVidaJogador.maxValue = scriptControlaJogador.statusJogador.Vida;
        AtualizarSliderVidaJogador();
        Time.timeScale = 1;
        tempoPontuacaoSalvo = PlayerPrefs.GetFloat("TempoMaximo");
    }

    public void AtualizarSliderVidaJogador(){
        SliderVidaJogador.value = scriptControlaJogador.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 + "min e " + segundos + "s.";
        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}s", min, seg);
            PlayerPrefs.SetFloat("PontuacaoMaxima", tempoPontuacaoSalvo);
        }

        if(TextoPontuacaoMaxima.text == ""){
            min= (int)tempoPontuacaoSalvo / 60;
            seg = (int)tempoPontuacaoSalvo % 60;
            TextoPontuacaoMaxima.text = string.Format("Seu melhor tempo é {0}min e {1}s", min, seg);
        }
    }

    public void Reiniciar(){
        SceneManager.LoadScene("game");
    }
}

public class ControlaJogador : MonoBehaviour, IMatavel{
    private Vector3 direcao;
    public LayerMask MascaraChao;
    public GameObject TextoGameOver;
    public ControlaInterface scriptControlaInterface;
    public AudioClip SomDeDano;
    private MovimentoJogador meuMovimentoJogador;
    private AnimacaoPersonagem animacaoJogador;
    public Status statusJogador;

    private void Start(){
        meuMovimentoJogador = GetComponent<MovimentoJogador>();
        animacaoJogador = GetComponent<AnimacaoPersonagem>();
        statusJogador = GetComponent<Status>();
    }

    void Update(){
        float eixoX = Input.GetAxis("Horizontal");
        float eixoZ = Input.GetAxis("Vertical");
        direcao = new Vector3(eixoX, 0, eixoZ);
        animacaoJogador.Movimentar(direcao.magnitude);
    }

    void FixedUpdate(){
        meuMovimentoJogador.Movimentar(direcao, statusJogador.Velocidade);
        meuMovimentoJogador.RotacaoJogador(MascaraChao);
    }

    public void TomarDano(int dano){
        statusJogador.Vida -= dano;
        scriptControlaInterface.AtualizarSliderVidaJogador();
        ControlaAudio.instancia.PlayOneShot(SomDeDano);

        if (statusJogador.Vida <= 0){
            Morrer();
        }
    }
    public void Morrer(){
        scriptControlaInterface.GameOver();
    }
}

Muito estranho, já tentou nas opções do build tirar a compressão? Ou trocar a versão da Unity, talvez pra mais atual ou fazer um downgrade? Pode ser algo com a versão.