Erro NullReferenceException Não consigo resolver
2 participantes
Página 1 de 1
Erro NullReferenceException Não consigo resolver
# O código apresentado abaixo não funciona corretamente no jogo
Estou desenvolvendo um jogo de apocalipse zumbi para aprendizagem (foi o tema escolhido pelo curso), a forma de reprodução de áudios nele foi feita utilizando a teoria do singleton, onde um código a parte é responsável por pegar o AudioSource (para que não seja necessário e criar um AudioSource para cada GameObject) uma instância para a reprodução.
Com o código acima so é necessário criar uma variável AudioClip e adicionar o clip logo após fazer a referência da Classe singleton.
Além de não reproduzir o som ainda não permite o funcionamento das linhas abaixo.
OBS: Está tudo devidamente preenchido corretamente.
Estou desenvolvendo um jogo de apocalipse zumbi para aprendizagem (foi o tema escolhido pelo curso), a forma de reprodução de áudios nele foi feita utilizando a teoria do singleton, onde um código a parte é responsável por pegar o AudioSource (para que não seja necessário e criar um AudioSource para cada GameObject) uma instância para a reprodução.
- Código:
public class Controla_Audio : MonoBehaviour
{
private AudioSource meuAudioSource;
public static AudioSource instancia;
private void Awake() {
meuAudioSource = GetComponent<AudioSource>();
instancia = meuAudioSource;
}
}
Com o código acima so é necessário criar uma variável AudioClip e adicionar o clip logo após fazer a referência da Classe singleton.
- Código:
public void TomaDano(int dano){
Vida -= dano;
//Código que reproduz o som de dano
Controla_Audio.instancia.PlayOneShot(SomDeDano);
ScriptControlaUI.AtualizaSliderVida();
if(Vida <= 0){
Time.timeScale = 0;
TextoGameOver.SetActive(true);
}
}
Além de não reproduzir o som ainda não permite o funcionamento das linhas abaixo.
OBS: Está tudo devidamente preenchido corretamente.
Renan Miranda RM- Iniciante
- PONTOS : 454
REPUTAÇÃO : 0
Idade : 21
Respeito as regras :
Re: Erro NullReferenceException Não consigo resolver
Renan Miranda RM escreveu:# O código apresentado abaixo não funciona corretamente no jogo
Estou desenvolvendo um jogo de apocalipse zumbi para aprendizagem (foi o tema escolhido pelo curso), a forma de reprodução de áudios nele foi feita utilizando a teoria do singleton, onde um código a parte é responsável por pegar o AudioSource (para que não seja necessário e criar um AudioSource para cada GameObject) uma instância para a reprodução.Mas quando executo o jogo aparece este erro: NullReferenceException: Object reference not set to an instance of an object
- Código:
public class Controla_Audio : MonoBehaviour
{
private AudioSource meuAudioSource;
public static AudioSource instancia;
private void Awake() {
meuAudioSource = GetComponent<AudioSource>();
instancia = meuAudioSource;
}
}
Com o código acima so é necessário criar uma variável AudioClip e adicionar o clip logo após fazer a referência da Classe singleton.
- Código:
public void TomaDano(int dano){
Vida -= dano;
//Código que reproduz o som de dano
Controla_Audio.instancia.PlayOneShot(SomDeDano);
ScriptControlaUI.AtualizaSliderVida();
if(Vida <= 0){
Time.timeScale = 0;
TextoGameOver.SetActive(true);
}
}
Além de não reproduzir o som ainda não permite o funcionamento das linhas abaixo.
Já resolvi o problema, era a ordem de execução que os scripts estvam sendo executados.
Renan Miranda RM- Iniciante
- PONTOS : 454
REPUTAÇÃO : 0
Idade : 21
Respeito as regras :
Re: Erro NullReferenceException Não consigo resolver
Tenta usar o RequireComponent.
exemplo:
exemplo:
- Código:
using System.Collections;
using UnityEngine;
[RequireComponent(typeof(AudioSource))]
public class Exemplo : MonoBehaviour...
Magnatah- Instrutor
- PONTOS : 3547
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: Erro NullReferenceException Não consigo resolver
Tambem pode usar um método Singleton diferente:
Exemplo de Uso:
- Código:
public class ControlaAudio : MonoBehaviour
{
private static ControlaAudio _Control;
private ControlaAudio { } // Método construtor privado.
private void Awake()
{
// Verifica se já existe uma instância do script e destrói a instância atual se já houver uma.
if (_Control == null)
_Control = this;
else if (_Control != this)
Destroy(gameObject.GetComponent(_Control.GetType()));
}
public static ControlaAudio Instancia() => _Control; // Este método retorna a instância atual do script.
// Esse método vai ser usado como exemplo mais adiante.
publico void PlayOneShot(SomDeDano)
{
// CODIGOS...
}
}
Exemplo de Uso:
- Código:
public void TomaDano(int dano){
Vida -= dano;
//NOVO CÓDIGO QUE REPRODUZ O SOM DE DANO
ControlaAudio.Instancia().PlayOneShot(SomDeDano);
ScriptControlaUI.AtualizaSliderVida();
if(Vida <= 0){
Time.timeScale = 0;
TextoGameOver.SetActive(true);
}
}
Magnatah- Instrutor
- PONTOS : 3547
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Tópicos semelhantes
» Alguem pode resolver o erro desses scripts, resolver o erro deste pacote
» Unity 3d (Não Consigo Resolver Isso)
» Bom dia, erro invisível como resolver? Erro -> [15:32:11]
» tenho alguns erros nos scripts do mfps mas nao consigo resolver....
» ALGUEM SABE RESOLVER ESSE ERRO?
» Unity 3d (Não Consigo Resolver Isso)
» Bom dia, erro invisível como resolver? Erro -> [15:32:11]
» tenho alguns erros nos scripts do mfps mas nao consigo resolver....
» ALGUEM SABE RESOLVER ESSE ERRO?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos