所以e(这不是一个索引超出范围的异常的问题,这就是为什么当Im使用相同的索引和方法,而其他地方对最近的重复标记有响应时,为什么会发生这种特定的变化)
基本上,我正在检查数组中的值是否为Null。但它 当我使用相同的东西时,总是给我一个超出范围的异常 原理 在另一个地区。这可能是一个愚蠢的问题,答案很愚蠢,但我已经 碰到这个问题,我似乎无法解决。
我检查了int的正确性,并且该数组是 正确的大小。
对不起,我没有在这里重点介绍,我不确定如何申请 他们。`错的地方
public void OnDragStop()
{
if (SlotHover.name.Contains("Slot"))
{
string[] OS = PSlot.name.Split('t');
int PSN = int.Parse(OS[1]);
string[] NS = SlotHover.name.Split('t');
SN = int.Parse(NS[1]);
Debug.Log(SN);
if (inventory.Inventoryitems[SN] == null)
{
inventory.Inventoryitems[SN] =
inventory.Inventoryitems[PSN];
inventory.Inventoryitems[PSN] = null;
SlotHover.transform.Find("ItemSlotSprite" +
SN).GetComponent<Image>().sprite =
PSlot.transform.Find("ItemSlotSprite" +
PSN).GetComponent<Image>().sprite;
PSlot.transform.Find("ItemSlotSprite" +
SN).GetComponent<Image>().sprite = EmptySprite;
this.gameObject.transform.position = PP;
}
}
}
The Place where its working
public void AddItem(Item ItemToAdd)
{
for(int i = 0; i < inventory.Inventoryitems.Length; i++)
{
if(inventory.Inventoryitems[i] == null)
{
inventory.Inventoryitems[i] = item;
Sprite sprite = ItemToAdd.DefualtSprite;
Inventory.transform.Find("Slot"+i).transform.Find("ItemSlotSprite" +
i).GetComponent<Image>().sprite = sprite;
return;
}
}
}`
IndexOutOfRange:数组索引超出范围 如上所示,它给了我什么我不确定在这种情况下为什么 它给出了例外。
答案 0 :(得分:0)
我认为您需要检查库存长度
if(inventory.Inventoryitems.Length >0){
for(int i = 0; i < inventory.Inventoryitems.Length; i++)
{
if(inventory.Inventoryitems[i] == null)
{
inventory.Inventoryitems[i] = item;
Sprite sprite = ItemToAdd.DefualtSprite;
Inventory.transform.Find("Slot"+i).transform.Find("ItemSlotSprite" +
i).GetComponent<Image>().sprite = sprite;
return;
}
}
}