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

Duvida sobre ordem de prioridade da função start()

coloquei a função atualizar slide vida no void start() do script de interface


void Start()
    {
        scriptControlaJogador = GameObject.FindWithTag("Player").GetComponent<controlaJogador>();
        sliderVidaJogador.maxValue = scriptControlaJogador.Vida;
        AtualizarSliderVida();
   }

até ai ok , quando o jogo inicia a barra ja começa com 100 de vida ao em vez de 1 de vida . Quando eu perco e a fase reinicia , a barra tambem ja inicia com 100 de vida , PERFEITO mas

tentei jogar o comando AtualizarSliderVida() na void start(0 do script de controla jogador

void Start()
{
        Time.timeScale = 1;
        rbJogador = GetComponent<Rigidbody>();
        anJogador = GetComponent<Animator>();
        scriptControlaCanvas.AtualizarSliderVida();
}   

quando eu starto a fase , o jogador começa com 100 de vida , PERFEITO !!, mas quando eu morro e reinicio , o slider começa com 1 de vida e o console do unity acusa o seguinte erro:

NullReferenceException: Object reference not set to an instance of an object ControlaCanvas.AtualizarSliderVida () (at Assets/Scripts/ControlaCanvas.cs:28) controlaJogador.Start () (at Assets/Scripts/controlaJogador.cs:25)

pelo o que entendi , depois que morro e reinicio a fase , o void start do script de interface é inicializado antes do de controla jogador , por isso quando a função esta nesse script de interface o jogo roda perfeito , mas quando esta no script de jogador , a barra de vida buga depois da primeira morte

Qual a ordem de prioridade de void start do unity ?

1 resposta
solução!

Não tem uma ordem pré definida o que acontece é uma prioridade das chamadas (Awake, Start) e não dos objetos.

Pra resolver isso tem uma parte da Unity que trata desse problema, se não me engano resolvemos na parte 3 do curso.

Se quiser dar uma olhada na doc da função você acha aqui e você colocaria pra rodar nessa ordem:

  • Status
  • ControlaJogador
  • ControlaInterface