尝试调用GetComponent <>()时,我的类“库存”返回为null

时间:2018-08-15 23:57:37

标签: c#

我正在团结

我正在尝试销毁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>();
    }

再次,如果这是一个容易解决的问题,或者可以通过搜索查询找到的问题,我感到非常抱歉。我已经搜寻了好一阵子,似乎没有任何帮助。我可能做错了什么,但是如果我需要提供完整的代码,我将不愿意。很抱歉,这个长期的问题。谢谢!

0 个答案:

没有答案