Error NullReferenceException: Object reference not set to an instance of an object
4 participantes
Página 1 de 1
Error NullReferenceException: Object reference not set to an instance of an object
Estou desenvolvendo um Projeto no Unity 3D versão 5.5.0f3 e surgiu o seguinte erro no script de controle do inimigo:
NullReferenceException: Object reference not set to an instance of an object
UpdateGetTargetTime ()
Tenho pesquisado há dias, e até o momento não encontrei nenhuma resolução.
Alguém poderia me dá uma orientação na resolução desse problema.
Abaixo as linhas do código onde o console aponta o erro.
void FixedUpdate()
{
UpdateGetTargetTime();
}
void UpdateGetTargetTime()
{
currTimeToGetTarget += Time.deltaTime;
if (currTimeToGetTarget >= timeToGetTarget)
{
target = GameObject.FindWithTag("Player").transform;
currTimeToGetTarget = 0;
}
}
NullReferenceException: Object reference not set to an instance of an object
UpdateGetTargetTime ()
Tenho pesquisado há dias, e até o momento não encontrei nenhuma resolução.
Alguém poderia me dá uma orientação na resolução desse problema.
Abaixo as linhas do código onde o console aponta o erro.
void FixedUpdate()
{
UpdateGetTargetTime();
}
void UpdateGetTargetTime()
{
currTimeToGetTarget += Time.deltaTime;
if (currTimeToGetTarget >= timeToGetTarget)
{
target = GameObject.FindWithTag("Player").transform;
currTimeToGetTarget = 0;
}
}
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
Re: Error NullReferenceException: Object reference not set to an instance of an object
Provavelmente não existe um objeto com a tag player na sua cena, se certifique, por favor.
NKKF- ProgramadorMaster
- PONTOS : 4819
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Error NullReferenceException: Object reference not set to an instance of an object
Cara, pelo que eu sei, esse erro "Null Reference Exception" acontece quando você se refere a algum componente dentro do script que não existe ou não foi encontrado.junior93 escreveu:Estou desenvolvendo um Projeto no Unity 3D versão 5.5.0f3 e surgiu o seguinte erro no script de controle do inimigo:
NullReferenceException: Object reference not set to an instance of an object
UpdateGetTargetTime ()
Tenho pesquisado há dias, e até o momento não encontrei nenhuma resolução.
Alguém poderia me dá uma orientação na resolução desse problema.
Abaixo as linhas do código onde o console aponta o erro.
void FixedUpdate()
{
UpdateGetTargetTime();
}
void UpdateGetTargetTime()
{
currTimeToGetTarget += Time.deltaTime;
if (currTimeToGetTarget >= timeToGetTarget)
{
target = GameObject.FindWithTag("Player").transform;
currTimeToGetTarget = 0;
}
}
Daniel Pires da Silva- Avançado
- PONTOS : 2755
REPUTAÇÃO : 37
Idade : 20
Áreas de atuação : Cursando C#
Respeito as regras :
Re: Error NullReferenceException: Object reference not set to an instance of an object
Existe sim, a Tag utilizada no Personagem principal é a Player.Souris escreveu:Provavelmente não existe um objeto com a tag player na sua cena, se certifique, por favor.
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
Re: Error NullReferenceException: Object reference not set to an instance of an object
amigo coloque o script inteiro dentro da caixinha script, vc deu a tag para o player?? , Player e player são bem diferentes,
vc clicou em cima do erro,geralmente ele leva ate a linha q possui ou nao esta corretamente no script,
vc clicou em cima do erro,geralmente ele leva ate a linha q possui ou nao esta corretamente no script,
Re: Error NullReferenceException: Object reference not set to an instance of an object
- Código:
using UnityEngine;
using System.Collections;
public class Toiao : MonoBehaviour
{
public static int STATE_IDLE = 0;
public static int STATE_DEAD = 1;
public static int STATE_ATTACK = 2;
public static int STATE_MOVE = 3;
public static int STATE_RANDMOVE = 4;
private Animator anim;
private Transform target;
public float playerCheckDistance = 1.5f;
public float maxDistance = 30.0f;
public float moveSpeed = 1.0f;
private int state;
private int lives;
private float timeToGetTarget = 10.0f;
private float currTimeToGetTarget;
private float distance;
void Start()
{
anim = GetComponent<Animator>();
target = GameObject.FindWithTag("Player").transform;
state = STATE_IDLE;
lives = 1;
currTimeToGetTarget = 0.0f;
distance = 0;
}
void Update()
{
distance = Vector3.Distance(target.position, transform.position);
if (state == STATE_MOVE || state == STATE_RANDMOVE)
{
anim.Play(Animator.StringToHash("Walk"));
}
else
{
if (state == STATE_ATTACK)
{
anim.Play(Animator.StringToHash("Attack"));
}
else if (state == STATE_DEAD)
{
anim.Play(Animator.StringToHash("Dying"));
Dead();
}
}
if (distance >= maxDistance)
{
Invoke("Idle", 3.0f);
}
else
{
if (distance <= playerCheckDistance)
{
state = STATE_ATTACK;
}
else
{
state = STATE_MOVE;
Move();
}
}
if (lives <= 0)
{
state = STATE_DEAD;
}
}
void FixedUpdate()
{
UpdateGetTargetTime();
}
void UpdateGetTargetTime()
{
currTimeToGetTarget += Time.deltaTime;
if (currTimeToGetTarget >= timeToGetTarget)
{
target = GameObject.FindWithTag("Player").transform;
currTimeToGetTarget = 0;
}
}
void OnCollisionStay(Collision hit)
{
if (hit.gameObject.CompareTag("Wall"))
{
transform.Rotate(Vector2.down * 360 * Time.deltaTime);
}
}
void RandomMove()
{
state = STATE_RANDMOVE;
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
RandomRot();
}
void Move()
{
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
transform.LookAt(target.position);
}
void RandomRot()
{
transform.Rotate(Vector2.down * Random.Range(-180, 180) * Time.deltaTime);
}
void SetState(int state)
{
this.state = state;
}
public int GetState()
{
return state;
}
void DecLive(int livesToDec)
{
lives -= livesToDec;
}
void Dead()
{
Destroy(gameObject);
FiveLevelManager.GetInstance().IncEnemiesDead(1);
}
}
felipehobs1 escreveu:amigo coloque o script inteiro dentro da caixinha script, vc deu a tag para o player?? , Player e player são bem diferentes,
vc clicou em cima do erro,geralmente ele leva ate a linha q possui ou nao esta corretamente no script,
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
Re: Error NullReferenceException: Object reference not set to an instance of an object
Sim, o personagem principal está com a Tag Player,felipehobs1 escreveu:amigo coloque o script inteiro dentro da caixinha script, vc deu a tag para o player?? , Player e player são bem diferentes,
vc clicou em cima do erro,geralmente ele leva ate a linha q possui ou nao esta corretamente no script,
o erro apontado no console apontam aos métodos informados na postagem. Que são os seguintes: NullReferenceException: Object reference not set to an instance of an object
Toiao.UpdateGetTargetTime () (at Assets/Project Assets/Scripts/Toiao.cs:93)
Toiao.FixedUpdate () (at Assets/Project Assets/Scripts/Toiao.cs:84)
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
Re: Error NullReferenceException: Object reference not set to an instance of an object
junior93 escreveu:
- Código:
using UnityEngine;
using System.Collections;
public class Toiao : MonoBehaviour
{
public static int STATE_IDLE = 0;
public static int STATE_DEAD = 1;
public static int STATE_ATTACK = 2;
public static int STATE_MOVE = 3;
public static int STATE_RANDMOVE = 4;
private Animator anim;
private Transform target;
public float playerCheckDistance = 1.5f;
public float maxDistance = 30.0f;
public float moveSpeed = 1.0f;
private int state;
private int lives;
private float timeToGetTarget = 10.0f;
private float currTimeToGetTarget;
private float distance;
void Start()
{
anim = GetComponent<Animator>();
target = GameObject.FindWithTag("Player").transform;
state = STATE_IDLE;
lives = 1;
currTimeToGetTarget = 0.0f;
distance = 0;
}
void Update()
{
distance = Vector3.Distance(target.position, transform.position);
if (state == STATE_MOVE || state == STATE_RANDMOVE)
{
anim.Play(Animator.StringToHash("Walk"));
}
else
{
if (state == STATE_ATTACK)
{
anim.Play(Animator.StringToHash("Attack"));
}
else if (state == STATE_DEAD)
{
anim.Play(Animator.StringToHash("Dying"));
Dead();
}
}
if (distance >= maxDistance)
{
Invoke("Idle", 3.0f);
}
else
{
if (distance <= playerCheckDistance)
{
state = STATE_ATTACK;
}
else
{
state = STATE_MOVE;
Move();
}
}
if (lives <= 0)
{
state = STATE_DEAD;
}
}
void FixedUpdate()
{
UpdateGetTargetTime();
}
void UpdateGetTargetTime()
{
currTimeToGetTarget += Time.deltaTime;
if (currTimeToGetTarget >= timeToGetTarget)
{
target = GameObject.FindWithTag("Player").transform;
currTimeToGetTarget = 0;
}
}
void OnCollisionStay(Collision hit)
{
if (hit.gameObject.CompareTag("Wall"))
{
transform.Rotate(Vector2.down * 360 * Time.deltaTime);
}
}
void RandomMove()
{
state = STATE_RANDMOVE;
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
RandomRot();
}
void Move()
{
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
transform.LookAt(target.position);
}
void RandomRot()
{
transform.Rotate(Vector2.down * Random.Range(-180, 180) * Time.deltaTime);
}
void SetState(int state)
{
this.state = state;
}
public int GetState()
{
return state;
}
void DecLive(int livesToDec)
{
lives -= livesToDec;
}
void Dead()
{
Destroy(gameObject);
FiveLevelManager.GetInstance().IncEnemiesDead(1);
}
}felipehobs1 escreveu:amigo coloque o script inteiro dentro da caixinha script, vc deu a tag para o player?? , Player e player são bem diferentes,
vc clicou em cima do erro,geralmente ele leva ate a linha q possui ou nao esta corretamente no script,
que estranho fiz um teste aqui nao relatou nada de erro,O Script parece tá tudo em ordem
Re: Error NullReferenceException: Object reference not set to an instance of an object
é o seguinte ,tenta buscar o player pelo nome
- Código:
target = GameObject.Find("nomedoPlayer").transform;
Re: Error NullReferenceException: Object reference not set to an instance of an object
Irei realizar a mudança e fazer um teste aqui.felipehobs1 escreveu:é o seguinte ,tenta buscar o player pelo nome
- Código:
target = GameObject.Find("nomedoPlayer").transform;
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
Re: Error NullReferenceException: Object reference not set to an instance of an object
Realizei a mudança... O erro persiste.junior93 escreveu:Irei realizar a mudança e fazer um teste aqui.felipehobs1 escreveu:é o seguinte ,tenta buscar o player pelo nome
- Código:
target = GameObject.Find("nomedoPlayer").transform;
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
Re: Error NullReferenceException: Object reference not set to an instance of an object
é amigo minha ultima perguunta é : seu Objeto esta ativado na cena??
Um dos Motivo desse erro
Um dos Motivo desse erro
Re: Error NullReferenceException: Object reference not set to an instance of an object
felipehobs1 escreveu:é amigo minha ultima perguunta é : seu Objeto esta ativado na cena??
Um dos Motivo desse erro
O jogo funciona assim: Há um numero de inimigos espalhados na cena, após todos eliminados pelo personagem principal, há um script que chama um áudio, depois do áudio ser apresentado, há um script que clona os inimigos do level anterior, trazendo os mesmos novamente para o cenário, o erro está no exato momento da exibição do áudio. O "NullReferenceException: Object reference not set to an instance of an object" faz com que o áudio entre num loop.
Respondendo a sua pergunta: O script ativa sim o objeto na cena, mas o erro no loop do áudio que buga o projeto.
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
Re: Error NullReferenceException: Object reference not set to an instance of an object
deve ser um erro de logica em algum dos scripts que tem relacao a este,que tenta buscar um Objeto mais nao encontra ele ou ele é destruido,
que aponta justamente quando tenta buscar o Player,
que aponta justamente quando tenta buscar o Player,
Re: Error NullReferenceException: Object reference not set to an instance of an object
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class FvMsgInfoControl : MonoBehaviour
{
public static bool canAwake;
public Texture[] infoTextures;
public AudioClip[] infoClips;
public RawImage target;
public GameObject groupToVisible;
protected int factor;
protected int currInfoMsg;
protected int currInfoClip;
protected CanvasGroup group;
protected AudioSource audioSource;
protected float timeToPass;
protected float timePerMsg;
protected bool canBack;
protected GameObject player;
void Start()
{
player = GameObject.FindWithTag("Player");
factor = 1;
timeToPass = timePerMsg = 0;
group = groupToVisible.GetComponent<CanvasGroup>();
group.alpha = 0;
audioSource = GetComponent<AudioSource>();
canBack = false;
currInfoClip = currInfoMsg = 0;
canAwake = true;
}
void Update()
{
if (((FiveLevelManager.GetInstance().GetEnemiesDead() % (10 * factor)) == 0) && (FiveLevelManager.GetInstance().GetEnemiesDead() > 0))
{
canBack = !canBack;
canAwake = !canAwake;
audioSource.clip = infoClips[currInfoClip];
timePerMsg = audioSource.clip.length;
target.texture = infoTextures[currInfoMsg];
audioSource.Play();
group.alpha = 1;
factor++;
player.SetActive(false);
}
if (canBack)
{
BackToGame();
}
if (FiveLevelManager.GetInstance().GetEnemiesDead() >= FiveLevelManager.MAX_SEED_COUNT)
{
Application.LoadLevel(3);
}
}
public void BackToGame()
{
timeToPass += Time.deltaTime;
if (timeToPass >= timePerMsg)
{
audioSource.Stop();
currInfoClip++;
currInfoMsg++;
if (player == null)
{
player = GameObject.FindWithTag("Player");
}
canBack = !canBack;
canAwake = !canAwake;
group.alpha = 0;
timeToPass = 0;
player.SetActive(true);
}
}
}
Esse é o script de controle da chamada de áudio.felipehobs1 escreveu:deve ser um erro de logica em algum dos scripts que tem relacao a este,que tenta buscar um Objeto mais nao encontra ele ou ele é destruido,
que aponta justamente quando tenta buscar o Player,
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
Re: Error NullReferenceException: Object reference not set to an instance of an object
bom dia,amigo ,nao tenho muita certeza, mas acho q a linha 57 ou outro script esta desativando seu objeto Player neste momento q toca o audio,
daí o Script continua tentando buscar ele.
player.SetActive(false);
dica:clica no player deixa ele selecionado dá um Play e ver se alguma hora ele é desativado,se nao for isso vç tera que q refazer cada passo dos seus scripts,ou esperar uma soluçao,ou dá upload no seu projeto pra alguem tentar corrigir por vç,
para o audio nao ficar em loop tenta colocar essa linha 54 junto com o audiosource.Play();
até logo
daí o Script continua tentando buscar ele.
player.SetActive(false);
dica:clica no player deixa ele selecionado dá um Play e ver se alguma hora ele é desativado,se nao for isso vç tera que q refazer cada passo dos seus scripts,ou esperar uma soluçao,ou dá upload no seu projeto pra alguem tentar corrigir por vç,
para o audio nao ficar em loop tenta colocar essa linha 54 junto com o audiosource.Play();
- Código:
if (!audioSource.isPlaying)
{
audioSource.Play();
}
até logo
Última edição por felipehobs1 em Sex Fev 23, 2018 11:58 am, editado 4 vez(es)
Re: Error NullReferenceException: Object reference not set to an instance of an object
Boa Noite Amigo!felipehobs1 escreveu:bom dia,amigo ,nao tenho muita certeza, mas acho q a linha 57 ou outro script esta desativando seu objeto Player neste momento q toca o audio,
daí o Script continua tentando buscar ele.
player.SetActive(false);
dica:clica no player deixa ele selecionado dá um Play e ver se alguma hora ele é desativado,se nao for isso vç tera que q refazer cada passo dos seus scripts,ou esperar uma soluçao,ou dá upload no seu projeto pra alguem tentar corrigir por vç,
para o audio nao ficar em loop tenta colocar essa linha 54 junto com o audiosource.Play();
- Código:
if (!audioSource.isPlaying)
{
audioSource.Play();
}
até logo
Primeiro lhe agradeço pela atenção e Orientações.
Realizei a observação sua sobre o Objeto Player, no momento da execução ele permanece ativo, é desativado no momento da chamada do Áudio... Pela lógica ele deve ser ativado após a execução do áudio. Mas como o erro acontece no momento da execução, ele nem chega a ser reativado.
Coloquei a linha de código no audiosource.Play();, Mas infelizmente permaneceu em loop.
O que resta é fazer o upload pra que alguem possa corrigir.
Grato.
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
Tópicos semelhantes
» Unity 5: Object reference not set to an instance of an object
» NullReferenceException: Object reference not set to an instance of an object tag RayCast
» NullReferenceException Object reference not set to an instance of an object
» Null Reference Exception: Object reference not set to an instance of an object
» Object Pooling
» NullReferenceException: Object reference not set to an instance of an object tag RayCast
» NullReferenceException Object reference not set to an instance of an object
» Null Reference Exception: Object reference not set to an instance of an object
» Object Pooling
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos