private void RefreshInventoryItems() { foreach (Transform child in itemSlotContainer) { if (child == itemSlotTemplate) { continue; } Destroy(child.gameObject); } int x = 0; int y = 0; float itemSlotCellSize = 75f; foreach (Item item in inventory.GetItemList()) { RectTransform itemSlotRectTransform = Instantiate(itemSlotTemplate, itemSlotContainer).GetComponent <RectTransform>(); itemSlotRectTransform.gameObject.SetActive(true); itemSlotRectTransform.GetComponent <Button_UI>().ClickFunc = () => { // Use item inventory.UseItem(item); }; itemSlotRectTransform.GetComponent <Button_UI>().MouseRightClickFunc = () => { // Drop item Item duplicateItem = new Item { itemType = item.itemType, amount = item.amount }; inventory.RemoveItem(item); ItemWorld.DropItem(player.GetPosition(), duplicateItem); }; itemSlotRectTransform.anchoredPosition = new Vector2(x * itemSlotCellSize, -y * itemSlotCellSize); Image image = itemSlotRectTransform.Find("image").GetComponent <Image>(); image.sprite = item.GetSprite(); TextMeshProUGUI uiText = itemSlotRectTransform.Find("amountText").GetComponent <TextMeshProUGUI>(); if (item.amount > 1) { uiText.SetText(item.amount.ToString()); } else { uiText.SetText(""); } x++; if (x >= 4) { x = 0; y++; } } }