繁体   English   中英

Unity C#数组索引超出范围

[英]Unity c# Array index is out of range

嗨,大家好,我正在为uni的项目制作一个多维数据集交换游戏,但我有一个问题,我的代码尝试访问不存在的数组地址,尽管我不确定它如何访问它。 由于第二或第三遍的某种原因,它将l,m和n设置为5,并且由于我的数组只有5x5x5个单位长,因此找不到任何东西。

public void matchCheck()
{ 
      int l;
      int m;
      int n;
    //sweep x axis for matches

   for (l = 0; l < 5; l++)     // the letter k is unclean and must be purged
    {
        for (m = 0; m < 5; m++)
        {
            for (n = 0; n < 5; n++)
            {

                if (n > 0)
                {
                    if (grid[n - 1, m, l] == grid[n, m, l] && xcombo < 6)
                    {

                        xcombo += 1;

                    }
                    else
                    {

                        switch (xcombo)
                        {
                            case 4:
                                Debug.Log("match 5" + cube[n - 1, m, l] + cube[n - 2, m, l] + cube[n - 3, m, l] + cube[n - 4, m, l] + cube[n - 5, m, l]);
                                   grid[n - 1, m, l] = randomNumber();
                                   grid[n - 2, m, l] = randomNumber();
                                   grid[n - 3, m, l] = randomNumber();
                                   grid[n - 4, m, l] = randomNumber();
                                   grid[n - 5, m, l] = randomNumber();
                                   xcombo = 0;
                                   refreshGrid();

                                break;
                            case 3:
                                Debug.Log("match 4" + cube[n - 1, j, l] + cube[n - 2, j, l] + cube[n - 3, j, l] + cube[n - 4, j, l]);
                                 grid[n - 1, m, l] = randomNumber();
                                 grid[n - 2, m, l] = randomNumber();
                                 grid[n - 3, m, l] = randomNumber();
                                 grid[n - 4, m, l] = randomNumber();

                                xcombo = 0;
                                refreshGrid();

                                break;
                            case 2:
                                Debug.Log("match 3" + cube[n - 1, j, l] + cube[n - 2, j, l] + cube[n - 3, j, l]);
                                  grid[n - 1, m, l] = randomNumber();
                                  grid[n - 2, m, l] = randomNumber();
                                  grid[n - 3, m, l] = randomNumber();
                                xcombo = 0;
                                refreshGrid();
                                break;
                        }
                        Debug.Log("combo" + xcombo);
                        xcombo = 0;
                        refreshGrid();

                    }

                }

            }
            n = 0;
        }
        m = 0;
        xcombo = 0;
    }

}
grid[n - 5

当n为低时,该行和所有类似的行(n-1除外)将导致负数。

另外,您的for循环从n开始于0,但是您立即检查它是否大于0。为什么不仅仅从1开始呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM