Estou com problemas para rodar o audio de dano, olhei as perguntas no fórum, reassisti a aula, bati o código do professor com o meu mas não consigo resolver.
No console tenho os seguintes erros: Logo quando starto { NullReferenceException: Object reference not set to an instance of an object ControlaAudio.Awake () (at Assets/Scripts/ControlaAudio.cs:12) } Quando começo a receber dano { NullReferenceException: Object reference not set to an instance of an object ControlaJogador.TomarDano (System.Int32 dano) (at Assets/Scripts/ControlaJogador.cs:87) ControlaInimigo.AtacaJogador () (at Assets/Scripts/ControlaInimigo.cs:63) } Obs¹ { Inclusive agora não esta mais dando o GameOver, se eu comentar o: ControlaAudio.instancia.PlayOneShot(SomDeDano); Volta a dar GameOver normal. }
Super estranho pois eu não consigo ver diferença no meu projeto para o seu professor, já chequei as variáveis para ver se estão setadas, se os components estão com os scripts... não sei..
Obs² { Quando eu dou Play acompanhando o Debug, percebo que Meu Audio Source não pega automaticamente a música, como acontece na aula. }
ControlaAudio:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControlaAudio : MonoBehaviour
{
private AudioSource meuAudioSource;
public static AudioSource instancia;
void Awake () // Awake roda antes do START
{
meuAudioSource.GetComponent<AudioSource>();
instancia = meuAudioSource;
}
}
ControlaJogador
public float Velocidade = 10;
private Vector3 direcao;
public LayerMask MascaraChao;
public GameObject TextoGameOver;
public int Vida = 100;
public ControlaInterface scriptControlaInterface;
public AudioClip SomDeDano;
//----- COMPONENTS
private Rigidbody rigidbodyJogador;
private Animator animatorJogador;
public void TomarDano(int dano)
{
Vida -= dano;
// Chama o Método Atualizar Slider de ControlaInterface
scriptControlaInterface.AtualizarSliderVidaJogador();
// Rodar SomDeDano uma vez só, OneShot
ControlaAudio.instancia.PlayOneShot(SomDeDano);
// GameOver
if (Vida <= 0)
{
Time.timeScale = 0;
TextoGameOver.SetActive(true);
}
}
Desde já muito obrigado, as aulas estão ótimas!