public bool reduceItemCount(string key)
    {
        if (!inventoryDict.ContainsKey(key))
        {
            Debug.LogWarning("item key to remove from inventory doesn't exist in inventory");
            return(false);
        }
        ActiveInventoryItem activeItem = inventoryDict[key];

        if (activeItem.itemCount <= 1)
        {
            removeScrollViewItem(activeItem);
            inventoryDict.Remove(key);
        }
        else
        {
            activeItem.itemCount -= 1;
            updateScrollViewItemCount(activeItem);
            inventoryDict[key] = activeItem;
        }
        return(true);
    }
    /*
     *  Public functions to add or remove item count from inventory (items are stacked)
     */
    public void addItemCount(string key)
    {
        ActiveInventoryItem activeItem;

        if (inventoryDict.ContainsKey(key))
        {
            activeItem            = inventoryDict[key];
            activeItem.itemCount += 1;
            inventoryDict[key]    = activeItem;
        }
        else
        {
            activeItem              = new ActiveInventoryItem();
            activeItem.itemCount    = 1;
            activeItem.itemObject   = itemDict[key];
            activeItem.itemInstance = addScrollViewItem(itemDict[key]);
            activeItem.itemInstance.GetComponent <Button>().onClick.AddListener(delegate { reduceItemCount(key); });
            updateScrollViewItemCount(activeItem);
            inventoryDict.Add(key, activeItem);
        }
        updateScrollViewItemCount(activeItem);
    }
 void removeScrollViewItem(ActiveInventoryItem activeItem)
 {
     Destroy(activeItem.itemInstance);
 }
 void updateScrollViewItemCount(ActiveInventoryItem activeItem)
 {
     activeItem.itemInstance.GetComponentInChildren <Text>().text = activeItem.itemObject.GetComponent <InventoryItem>().itemName + "\t X "
                                                                    + activeItem.itemCount + "\n" + activeItem.itemObject.GetComponent <InventoryItem>().itemDescription;
 }