[英]Unity3D ArgumentOutOfRangeException: Index was out of range
我的代码有问题。 当我尝试拾取对象时,编译器将在此行停止。
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;
}
}
}
存在您的问题的可能性很大,因为您在此行上的索引之一引用了超出集合范围的内容。
您正在设置此变量,用作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}");
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.