1
resposta

Erro na camera

Boa tarde, fiz tudo certinho conforme a aula,porem a camera não funciona como deveria e da este erro. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E se eu ativar a camera 1 no Render Camera, ela se ativa no jogador 1 até se o jogador 2 morrer tambem, o que eu fiz de errado?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

InterfaceDoCanvasInativo

  {
    [SerializeField]
private GameObject fundo;
private Canvas canvas;

private void Awke()
{
 canvas = GetComponent<Canvas>();
}

public void Mostrar(Camera camera)
{
fundo.SetActive(true);
canvas.worldCamera = camera;
}
}

DiretorMultplayer

private Jogador[] jogadores;
private bool alguemMorto;
private int pontosDesdeAMorte;
private InterfaceDoCanvasInativo interfaceInativo;

protected override void Start()
{
    base.Start();
    jogadores = GameObject.FindObjectsOfType<Jogador>();
    interfaceInativo = GameObject.FindObjectOfType<InterfaceDoCanvasInativo>();
}
public void AvisarQueAlguemMorreu(Camera camera)
{
    alguemMorto = true;
    pontosDesdeAMorte = 0;
    interfaceInativo.Mostrar(camera);
}

public void ReviverSePrecisar()
{
if(alguemMorto)
{
    pontosDesdeAMorte++;
    if(pontosDesdeAMorte >= 2)
    {
        ReviverJogadores();
    }
}

}
  private void ReviverJogadores()
{
alguemMorto = false;
foreach(var jogador in this.jogadores)
{
    jogador.Ativar();
}
}
 }
1 resposta

Olá, Vitor, tudo bem?

A exceção está ocorrendo na função Mostrar() da InterfaceDoCanvasInativo. Ou seja, um dos objetos que você está tentando acessar nessa função não foi inicializado corretamente.

Vitor, notei que há um erro de digitação no nome do método Awke, que deve ser Awake. Portanto, peço que corrija para que o Unity possa chamá-lo corretamente ao inicializar o script.

Além disso, peço que faça algumas verificações, entre elas como certifiquede que o objeto fundo e a variável canvas estão sendo atribuídos corretamente. Você precisa arrastar o objeto de fundo correspondente para o campo exposto pelo atributo [SerializeField] no seu script InterfaceDoCanvasInativo.

Verifique, ainda, a referência da câmera, quando você chama a função Mostrar(). Certifique que a câmera que você está passando não é nula. Isso pode acontecer se o jogador morrer e a referência da câmera não estiver sendo passada corretamente. Como também, se a câmera está sendo passada corretamente no evento do Unity que chama AvisarQueAlguemMorreu.

Após fazer essas verificações e correções, teste novamente para ver se o problema foi resolvido.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!