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

[Dúvida] Sem audio de dano

Oi, eu procurei, a minha dúvida aqui no Fórum, o problema apresentado foi muito similar, eu recebo a mensagem: NullReferenceException: Object reference not set to an instance of an object ControlaJogador.TomarDano (System.Int32 dano) (at Assets/Script/ControlaJogador.cs:82)

public class ControlaJogador : MonoBehaviour
{

    public float Velocidade = 10;
    private Vector3 direcao;
    public LayerMask MascaraChao;
    public GameObject TextoGameOver;
    private Rigidbody rigidbodyJogador;
    private Animator animatorJogador;
    public int Vida = 100;
    public ControlaInterface scriptControlaInterface;
    public AudioClip SomDeDano;

...

public void TomarDano (int dano)
    {

        Vida -= dano;
        scriptControlaInterface.AtualizarVidaJogador();
        ControlaAudio.instancia.PlayOneShot(SomDeDano);         //linha 82

        if (Vida <= 0)
        {

            Time.timeScale = 0;
            TextoGameOver.SetActive(true);
        }


    }
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ControlaAudio : MonoBehaviour
{
    private AudioSource meuAudioSource;
    public static AudioSource instancia;


    void Awake ()
    {

        meuAudioSource = GetComponent<AudioSource>();
        instancia = meuAudioSource;

    }

}

Não tem o som de dano, e também não acarreta na tela de game over assim como na dúvida https://cursos.alura.com.br/forum/topico-audio-do-dano-nao-esta-reproduzindo-230785 mas aqui o meuAudioSource consta como igual a solução apresentada Um adendo, copiei o script tal qual o do som da arma, o audio e consta mesmo tipo de problema:

void Update () {
        if(Input.GetButtonDown("Fire1"))
        {
            Instantiate(Bala, CanoDaArma.transform.position, CanoDaArma.transform.rotation);
            ControlaAudio.instancia.PlayOneShot(SomDoTiro);   //problema nessa linha
        }
    }
2 respostas

Oi, Luiz, tudo bem?

Esse erro quer dizer que a variável não está sendo preenchida mesmo que o script esteja perfeito pode estar faltando algo na Unity.

Confere no componente de áudio se quando você dá o Play ele preenche a variável instancia no inspector certinho, depois confere se a variável SomDeDano tá preenchida também.

solução!

Aparentemente meu projeto não salvou o último o passo final de ter controla áudio dentro do objeto vazio, logo não funcionou direito

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software