Argument out of range?

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!

Start debugging your values, without knowing a line number, it’s hard it say. But, anytime you are trying to access a collection (Items, showDraggedItem) to make sure you aren’t trying to access an index that doesn’t exist.

Also, if your settings are messed up, that may be why you don’t see a line number.

Take a look at the stack trace logging to make sure that is setup correctly.
You can also generally double click the message to be taking to the line in the script as well.

The most helpful thing you can do is mention what line number the error occurs on. Otherwise all I can say is to add debugging before the line the error occurs on to output the index number you’re trying to access and how many are in the collection. You’ll undoubtedly notice that the collection you’re using is smaller than you expect.

A common mistake is forgetting that collections start from 0 instead of 1 by the way.