Not sure why I am getting an “Argument out of range, Parameter name: index” error, and it doesn’t give me any more information on the error. I’ll post my code but I’m not sure what is wrong.
public class SlotScript : MonoBehaviour, IPointerDownHandler, IDragHandler
{
public Item item;
Image itemImage;
public int slotNumber;
Inventory inventory;
Text itemAmount;
void Start ()
{
itemAmount = gameObject.transform.GetChild(1).GetComponent<Text>();
inventory = GameObject.FindGameObjectWithTag("Inventory").GetComponent<Inventory>();
itemImage = gameObject.transform.GetChild(0).GetComponent<Image>();
}
void Update ()
{
if (inventory != null && inventory.Items[slotNumber].itemName != null)
{
itemAmount.enabled = false;
item = inventory.Items[slotNumber];
itemImage.enabled = true;
itemImage.sprite = inventory.Items[slotNumber].itemIcon;
if (inventory.Items[slotNumber].stackable == true) //inventory.Items[slotNumber].itemType == Item.ItemType.Stackable
{
itemAmount.enabled = true;
itemAmount.text = "" + inventory.Items[slotNumber].itemValue;
}
}
else
{
if (itemImage != null)
{
itemImage.enabled = false;
}
}
}
public void OnPointerDown(PointerEventData data)
{
if (inventory.Items[slotNumber].itemName == null && inventory.draggingItem)
{
inventory.Items[slotNumber] = inventory.draggedItem;
inventory.closeDraggedItem();
}
else if (inventory.draggingItem && inventory.Items[slotNumber].itemName != null)
{
try
{
inventory.Items[inventory.indexOfDraggedItem] = inventory.Items[slotNumber];
inventory.Items[slotNumber] = inventory.draggedItem;
inventory.closeDraggedItem();
}
catch { }
}
}
public void OnDrag(PointerEventData data)
{
if (!inventory.draggingItem)
{
if (inventory.Items[slotNumber].itemName != null)
{
inventory.showDraggedItem(inventory.Items[slotNumber], slotNumber);
inventory.Items[slotNumber] = new Item();
itemAmount.enabled = false;
}
}
}
}
Any help at all would be great!