我的代码有问题。当我尝试拾取对象时,编译器会在此行停止。
ekwipunek.ListaNaszychPrzedmiotow[i] = BazaDanych_Eq.ListaPrzedmiotow [IdPrzedmiotu];
ArgumentOutOfRangeException:索引超出范围。必须为非负数,并且小于集合的大小。
if ( Input.GetKeyDown (KeyCode.Q))
{
IdPrzedmiotu = DoPodniesienia.GetComponent<PrzedmiotPodniesienie>().id;
for (int i = 0; i < ekwipunek.ListaNaszychPrzedmiotow.Count; i++)
{
if (ekwipunek.ListaNaszychPrzedmiotow[i].id == 0 && DoPodniesienia != null)
{
ekwipunek.ListaNaszychPrzedmiotow[i] = BazaDanych_Eq.ListaPrzedmiotow [IdPrzedmiotu];
Destroy(DoPodniesienia);
DoPodniesienia = null;
}
}
}
答案 0 :(得分:2)
您的问题很可能存在,因为您在此行上的索引之一引用了超出集合范围的内容。
您正在设置此变量,用作ID的索引。
IdPrzedmiotu = DoPodniesienia.GetComponent<PrzedmiotPodniesienie>().id;
然后,您将进一步引用它,而无需验证它在您的收藏夹中是否可用。
BazaDanych_Eq.ListaPrzedmiotow [IdPrzedmiotu]
您需要先验证该值或该集合,然后才能访问它。
ArgumentOutOfRangeException
public class YourClass
{
...
Debug.Log($"The collection \"ListaNaszychPrzedmiotow\" is {ListaNaszychPrzedmiotow.Count()}");
Debug.Log($"The index value of \"i\" is {i}");
...
}