Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] O ranking não se atualiza

Boa noite, como o titulo já diz o ranking não se atualiza independente de quantos pontos eu tenha feito, como resolver?

NovaPoontuacao

    {        
[SerializeField]
private TextoDinamico textoPontuacao;

private Pontuacao pontuacao;


private void Start()
{
    GameObject.FindObjectOfType<Pontuacao>();

    var totalDePontos = -1;
    if(pontuacao != null)
    {
        totalDePontos = pontuacao.Pontos;
    }

    textoPontuacao.AtualizarTexto(totalDePontos);
}
 }

Pontuacao

 {
public int Pontos
{
get 
{
  return pontos;
}
 }
[SerializeField]
private MeuEvento aoPontuar;

private int pontos;

public void Pontuar()
{
 pontos++;
aoPontuar.Invoke(pontos);
 }
 }

[Serializable]
public class MeuEvento : UnityEvent<int>
{

}
2 respostas
solução!

Oii Vitor, tudo bem?

Seu código está um pouco diferente da aula, não sei se você já aplicou as alterações feitas nessa aula 3, mas vamos lá!

Acredito que o que você queria fazer é atribuir o resultado dessa chamada à variável pontuacao. Tente alterar essa linha para this.pontuacao = GameObject.FindObjectOfType<Pontuacao>();. Isso deve garantir que o objeto pontuacao seja inicializado corretamente.

Seu código ficaria assim:

 private Pontuacao pontuacao;
    
    private void Start () {
        this.pontuacao = GameObject.FindObjectOfType<Pontuacao>();
        var totalDePontos = -1;
        if(this.pontuacao  != null)
        {
            totalDePontos = this.pontuacao.Pontos;
        }

Essa alteração deve resolver o problema de atualização do ranking. Se a pontuação ainda não estiver atualizando corretamente, verifique se o objeto Pontuacao está sendo destruído corretamente quando a cena muda.

E você sempre pode conferir seu código no repositório do curso esse link leva direto pro arquivo NovaPontuacao.cs mas você pode navegar para outros arquivos que deseja conferir.

Um abraço e bons estudos.

Obrigado, pela dica funcionou.