Null Reference Exception: Object reference not set to an instance of an object
3 participantes
Página 1 de 1
Null Reference Exception: Object reference not set to an instance of an object
Olá pessoal, tudo legal com vocês?
Galera, eu preciso de uma instrução, sou novo no Unity e também sou novo em programação, porém vou estudando e seguindo vários tutoriais.
Estou seguindo um tutorial passo a passo e muito bem explicado do canal We Make a Game, recentemente na parte de inventário e coleta de itens, mas tem um erro que está me frustrando demais. Tenho um Player, tenho o item e o inventário e os scripts de cada um e fiz com bastante atenção cada script e tentei entender cada código. O problema é que comigo não deu certo, quando o player chega próximo ao item, aperto o botão para coletar o item acontece o erro: NullReferenceException: Object Reference not set to an object. E ele aparece no Script de base de itens. Por favor, se alguém puder me dar uma ajuda ou instrução, ficarei muito agradecido!
Eu gostaria de colocar imagens pra mostrar de forma mais precisa mas acho que é só por Link
Galera, eu preciso de uma instrução, sou novo no Unity e também sou novo em programação, porém vou estudando e seguindo vários tutoriais.
Estou seguindo um tutorial passo a passo e muito bem explicado do canal We Make a Game, recentemente na parte de inventário e coleta de itens, mas tem um erro que está me frustrando demais. Tenho um Player, tenho o item e o inventário e os scripts de cada um e fiz com bastante atenção cada script e tentei entender cada código. O problema é que comigo não deu certo, quando o player chega próximo ao item, aperto o botão para coletar o item acontece o erro: NullReferenceException: Object Reference not set to an object. E ele aparece no Script de base de itens. Por favor, se alguém puder me dar uma ajuda ou instrução, ficarei muito agradecido!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ItemBase : MonoBehaviour
{
public string nameItem;
public Sprite icon;
public bool isStacklabe;
protected int amount = 1;
private bool canTakeItem;
public void AddItem (int amountToAdd = 1)
{
amount += amountToAdd;
}
public int GetAmount()
{
return amount;
}
public void Update()
{
if (Input.GetKeyDown (KeyCode.V) && canTakeItem)
{
InventoryController.instance.AddItemToInventory(this);
}
}
public void OnTriggerStay(Collider other)
{
if(other.gameObject.CompareTag("Player"))
{
canTakeItem = true;
UIController.instance.ShowMessageToTakeItem ();
}
}
public void OnTriggerExit(Collider other)
{
if(other.gameObject.CompareTag("Player"))
{
canTakeItem = false;
}
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InventoryController : MonoBehaviour
{
public List<ItemBase> inventoryItems;
public static InventoryController instance;
void Start()
{
instance = this;
}
void Update ()
{
}
public void AddItemToInventory(ItemBase item)
{
inventoryItems.Add (item);
item.gameObject.SetActive (false);
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MedBehaviour : ItemBase
{
public float amountLiquid;
}
Eu gostaria de colocar imagens pra mostrar de forma mais precisa mas acho que é só por Link
JuniorMoraes- Iniciante
- PONTOS : 1794
REPUTAÇÃO : 0
Idade : 34
Respeito as regras :
Re: Null Reference Exception: Object reference not set to an instance of an object
Entendo.
O erro diz que o objeto (referência) q vc está tentando acessar é nullo, ou seja, não existe mais na memória.
Muitas coisas podem acarretar esse erro, fica difícil saber se ele veio do script do player, do item, do inventário ou da base do item. Recomendo postar o erro aqui ou dizer no debug log da onde esse erro está indo.
Meu palpite seria a parte do inventário onde ele desativa o item:
Pq dessa forma o item some da cena, e de alguma forma algum script pode estar tentando acessar ele.
Outro palpite é o script do inventário em si.
Como está utilizando o singleton pattern pra ele, é essencial q só exista uma instância dele no jogo todo. Se vc estiver em outra cena q tem outro objeto do inventário ativo, pode causar esse conflito.
Mas é difícil saber sem a descrição do erro completa e de qual script ele vêm.
O erro diz que o objeto (referência) q vc está tentando acessar é nullo, ou seja, não existe mais na memória.
Muitas coisas podem acarretar esse erro, fica difícil saber se ele veio do script do player, do item, do inventário ou da base do item. Recomendo postar o erro aqui ou dizer no debug log da onde esse erro está indo.
Meu palpite seria a parte do inventário onde ele desativa o item:
- Código:
item.gameObject.SetActive(false);
Pq dessa forma o item some da cena, e de alguma forma algum script pode estar tentando acessar ele.
Outro palpite é o script do inventário em si.
Como está utilizando o singleton pattern pra ele, é essencial q só exista uma instância dele no jogo todo. Se vc estiver em outra cena q tem outro objeto do inventário ativo, pode causar esse conflito.
Mas é difícil saber sem a descrição do erro completa e de qual script ele vêm.
Re: Null Reference Exception: Object reference not set to an instance of an object
Pois então, eu queria postar as imagens ou o próprio arquivo do projeto aqui, é permitido fazer isso aqui?MayLeone escreveu:Entendo.
O erro diz que o objeto (referência) q vc está tentando acessar é nullo, ou seja, não existe mais na memória.
Muitas coisas podem acarretar esse erro, fica difícil saber se ele veio do script do player, do item, do inventário ou da base do item. Recomendo postar o erro aqui ou dizer no debug log da onde esse erro está indo.
Meu palpite seria a parte do inventário onde ele desativa o item:
- Código:
item.gameObject.SetActive(false);
Pq dessa forma o item some da cena, e de alguma forma algum script pode estar tentando acessar ele.
Outro palpite é o script do inventário em si.
Como está utilizando o singleton pattern pra ele, é essencial q só exista uma instância dele no jogo todo. Se vc estiver em outra cena q tem outro objeto do inventário ativo, pode causar esse conflito.
Mas é difícil saber sem a descrição do erro completa e de qual script ele vêm.
Mas só pra complementar, o erro aparece linha 28 no script ItemBase (base de itens).
Vou ver outra forma de esclarecer melhor minha dúvida, se for possível postar imagens ou o arquivo, melhor ainda!
Obrigado pela atenção!
JuniorMoraes- Iniciante
- PONTOS : 1794
REPUTAÇÃO : 0
Idade : 34
Respeito as regras :
Re: Null Reference Exception: Object reference not set to an instance of an object
Oi pessoal, só to atualizando esse post pra ver se vcs podem me dar uma forcinha, eu refiz tudo mas o problema ainda persiste, eu sinceramente não consigo encontrar onde pode estar o erro, então vou mostrar duas imagens que talvez mostre alguma coisa relevante pra esclarecer:
Essa quando entra em contato com o item, aparece o problema no script ItemBase (base de itens) cs:28.
E essa marca o item em amarelo, é aqui que não entendo.
Pfv, gente. Não sei se estou fazendo certo de vir aqui e pedir ajuda dessa forma. Mas estarei aqui pra ajudar em que eu puder. Agradeço desde já!
Essa quando entra em contato com o item, aparece o problema no script ItemBase (base de itens) cs:28.
E essa marca o item em amarelo, é aqui que não entendo.
Pfv, gente. Não sei se estou fazendo certo de vir aqui e pedir ajuda dessa forma. Mas estarei aqui pra ajudar em que eu puder. Agradeço desde já!
JuniorMoraes- Iniciante
- PONTOS : 1794
REPUTAÇÃO : 0
Idade : 34
Respeito as regras :
Re: Null Reference Exception: Object reference not set to an instance of an object
não da pra ver as imagensJuniorMoraes escreveu:Oi pessoal, só to atualizando esse post pra ver se vcs podem me dar uma forcinha, eu refiz tudo mas o problema ainda persiste, eu sinceramente não consigo encontrar onde pode estar o erro, então vou mostrar duas imagens que talvez mostre alguma coisa relevante pra esclarecer:
Essa quando entra em contato com o item, aparece o problema no script ItemBase (base de itens) cs:28.
E essa marca o item em amarelo, é aqui que não entendo.
Pfv, gente. Não sei se estou fazendo certo de vir aqui e pedir ajuda dessa forma. Mas estarei aqui pra ajudar em que eu puder. Agradeço desde já!
diegopds- Mestre
- PONTOS : 3420
REPUTAÇÃO : 52
Idade : 26
Respeito as regras :
Re: Null Reference Exception: Object reference not set to an instance of an object
provavelmente o problema está no script base de itens,pq primeiro vc deve instanciar a list criando uma nova,eu n sei se da erro n fazer isso.JuniorMoraes escreveu:Olá pessoal, tudo legal com vocês?
Galera, eu preciso de uma instrução, sou novo no Unity e também sou novo em programação, porém vou estudando e seguindo vários tutoriais.
Estou seguindo um tutorial passo a passo e muito bem explicado do canal We Make a Game, recentemente na parte de inventário e coleta de itens, mas tem um erro que está me frustrando demais. Tenho um Player, tenho o item e o inventário e os scripts de cada um e fiz com bastante atenção cada script e tentei entender cada código. O problema é que comigo não deu certo, quando o player chega próximo ao item, aperto o botão para coletar o item acontece o erro: NullReferenceException: Object Reference not set to an object. E ele aparece no Script de base de itens. Por favor, se alguém puder me dar uma ajuda ou instrução, ficarei muito agradecido!Script de base de itens.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ItemBase : MonoBehaviour
{
public string nameItem;
public Sprite icon;
public bool isStacklabe;
protected int amount = 1;
private bool canTakeItem;
public void AddItem (int amountToAdd = 1)
{
amount += amountToAdd;
}
public int GetAmount()
{
return amount;
}
public void Update()
{
if (Input.GetKeyDown (KeyCode.V) && canTakeItem)
{
InventoryController.instance.AddItemToInventory(this);
}
}
public void OnTriggerStay(Collider other)
{
if(other.gameObject.CompareTag("Player"))
{
canTakeItem = true;
UIController.instance.ShowMessageToTakeItem ();
}
}
public void OnTriggerExit(Collider other)
{
if(other.gameObject.CompareTag("Player"))
{
canTakeItem = false;
}
}
}Script do inventário.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InventoryController : MonoBehaviour
{
public List<ItemBase> inventoryItems;
public static InventoryController instance;
void Start()
{
instance = this;
}
void Update ()
{
}
public void AddItemToInventory(ItemBase item)
{
inventoryItems.Add (item);
item.gameObject.SetActive (false);
}
}Script do Item.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MedBehaviour : ItemBase
{
public float amountLiquid;
}
Eu gostaria de colocar imagens pra mostrar de forma mais precisa mas acho que é só por Link
- Código:
public List<ItemBase> inventoryItems = new List<ItemBase>();
e o erro que acontece na linha 28 do scripts é por conta que n existe a list instanciada e vc ta tentando colocar valores nela
diegopds- Mestre
- PONTOS : 3420
REPUTAÇÃO : 52
Idade : 26
Respeito as regras :
Re: Null Reference Exception: Object reference not set to an instance of an object
Então, quanto as imagens, tentei pelo Google Drive mas parece que não funciona , vou tentar pelo Imgur.diegopds escreveu:provavelmente o problema está no script base de itens,pq primeiro vc deve instanciar a list criando uma nova,eu n sei se da erro n fazer isso.JuniorMoraes escreveu:Olá pessoal, tudo legal com vocês?
Galera, eu preciso de uma instrução, sou novo no Unity e também sou novo em programação, porém vou estudando e seguindo vários tutoriais.
Estou seguindo um tutorial passo a passo e muito bem explicado do canal We Make a Game, recentemente na parte de inventário e coleta de itens, mas tem um erro que está me frustrando demais. Tenho um Player, tenho o item e o inventário e os scripts de cada um e fiz com bastante atenção cada script e tentei entender cada código. O problema é que comigo não deu certo, quando o player chega próximo ao item, aperto o botão para coletar o item acontece o erro: NullReferenceException: Object Reference not set to an object. E ele aparece no Script de base de itens. Por favor, se alguém puder me dar uma ajuda ou instrução, ficarei muito agradecido!Script de base de itens.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ItemBase : MonoBehaviour
{
public string nameItem;
public Sprite icon;
public bool isStacklabe;
protected int amount = 1;
private bool canTakeItem;
public void AddItem (int amountToAdd = 1)
{
amount += amountToAdd;
}
public int GetAmount()
{
return amount;
}
public void Update()
{
if (Input.GetKeyDown (KeyCode.V) && canTakeItem)
{
InventoryController.instance.AddItemToInventory(this);
}
}
public void OnTriggerStay(Collider other)
{
if(other.gameObject.CompareTag("Player"))
{
canTakeItem = true;
UIController.instance.ShowMessageToTakeItem ();
}
}
public void OnTriggerExit(Collider other)
{
if(other.gameObject.CompareTag("Player"))
{
canTakeItem = false;
}
}
}Script do inventário.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InventoryController : MonoBehaviour
{
public List<ItemBase> inventoryItems;
public static InventoryController instance;
void Start()
{
instance = this;
}
void Update ()
{
}
public void AddItemToInventory(ItemBase item)
{
inventoryItems.Add (item);
item.gameObject.SetActive (false);
}
}Script do Item.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MedBehaviour : ItemBase
{
public float amountLiquid;
}
Eu gostaria de colocar imagens pra mostrar de forma mais precisa mas acho que é só por Link
- Código:
public List<ItemBase> inventoryItems = new List<ItemBase>();
e o erro que acontece na linha 28 do scripts é por conta que n existe a list instanciada e vc ta tentando colocar valores nela
Quanto ao erro, descobri que se eu abrir e fechar o inventário antes uma vez só, ele instancia o item nele, é como se o inventário estivesse desativado e por isso se dava o erro. Agora tenho que resolver isso
Agradeço pela atenção de vcs! Muito obrigado mesmo!
Imagem 1
https://imgur.com/hTa3XjO
Imagem 2
https://imgur.com/FFV33Yy
JuniorMoraes- Iniciante
- PONTOS : 1794
REPUTAÇÃO : 0
Idade : 34
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
» Error NullReferenceException: Object reference not set to an instance of an object
» NullReferenceException Object reference not set to an instance of an object
» null reference exception
» NullReferenceException: Object reference not set to an instance of an object tag RayCast
» Error NullReferenceException: Object reference not set to an instance of an object
» NullReferenceException Object reference not set to an instance of an object
» null reference exception
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos