C# Unity3d数组索引超出范围

C# Unity3d数组索引超出范围,c#,unity3d,C#,Unity3d,我无法修复它。有人能帮我修复吗?\u candies在GetCandies()中初始化,但在您的代码中未调用此函数。我怀疑,当被指控的行被执行时,\u candies仍然是空的。对unity一无所知,但是数组[0,1,2]例如lentgh是3,但最后一个索引是2,因为数组索引是基于零的。这可能是原因吗?使用.length-1.Is\u candies.length0是否有可能?@Sami:Random.Range的第二个参数是唯一的上限,除非两个参数相同。(就我个人而言,我会抛出一个例外,但是…

我无法修复它。有人能帮我修复吗?

\u candies
GetCandies()
中初始化,但在您的代码中未调用此函数。我怀疑,当被指控的行被执行时,
\u candies
仍然是空的。

对unity一无所知,但是数组[0,1,2]例如lentgh是3,但最后一个索引是2,因为数组索引是基于零的。这可能是原因吗?使用.length-1.Is
\u candies.length
0是否有可能?@Sami:Random.Range的第二个参数是唯一的上限,除非两个参数相同。(就我个人而言,我会抛出一个例外,但是…)
void FillGrid()
{ 
    for(int x = 0; x < xSize; x++)
    {
        for(int y = 0; y < ySize; y++)
        {
            InstantiateCandy(x, y);
        }

    }
}
void InstantiateCandy(int x,int y)
{
    GameObject randomCandy = _candies[Random.Range(0, _candies.Length)];

    GameObject newCandy =(GameObject)Instantiate(randomCandy, new Vector3(x, y), Quaternion.identity);
    newCandy.GetComponent<GridItem>().OnItemPositionChanged(x, y);


}
void GetCandies()
{
    _candies = Resources.LoadAll<GameObject>("Prefabs");

    for(int i=0; i< _candies.Length-1;i++)
    {
        _candies[i].GetComponent<GridItem>().id = i;
    }

}


}
GameObject randomCandy = _candies[Random.Range(0, _candies.Length)];