我正在团结
我正在尝试销毁Unity中的一个gameObject,并且一旦该gameObject被销毁,它将把该物品添加到玩家的清单中。问题是,当我在Unity中调用此方法时,出现错误:
NullReferenceException:对象引用未设置为对象的实例
所有的gameObject销毁都通过以下方法在我的角色脚本中处理:
void PlayerInput()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
Vector3 c = Camera.main.ScreenToWorldPoint(Input.mousePosition);
RaycastHit2D hit2D = Physics2D.Raycast(transform.position, c - transform.position);
if (hit2D.collider.gameObject != null)
{
int TileID = hit2D.collider.gameObject.GetComponent<IDScript>().ObjectID;
//inventory.AddItem(TileID);
Destroy(hit2D.collider.gameObject);
}
}
}
一旦我从stock.AddItem(TileID)中删除评论,就会出现我的问题。并尝试运行它。这是方法AddItem:
public void AddItem(int id)
{
Item itemToAdd = database.FetchItemByID(id);
for (int i = 0; i < Items.Count; i++)
{
if (Items[i].ID == -1)
{
Items[i] = itemToAdd;
GameObject itemObj = Instantiate(inventoryItem);
itemObj.transform.SetParent(slots[i].transform);
itemObj.transform.position = Vector2.zero;
itemObj.GetComponent<Image>().sprite = itemToAdd.Sprite;
itemObj.name = itemToAdd.Title;
break;
}
}
}
我做了一些调试,发现当我运行Debug.Log(Inventory);时,在我的Character类中,Inventory类返回null。这是我用来将我的Inventory类“引入”到角色类的代码:
Inventory inventory;
void Start()
{
inventory = GetComponent<Inventory>();
}
再次,如果这是一个容易解决的问题,或者可以通过搜索查询找到的问题,我感到非常抱歉。我已经搜寻了好一阵子,似乎没有任何帮助。我可能做错了什么,但是如果我需要提供完整的代码,我将不愿意。很抱歉,这个长期的问题。谢谢!