0
私はuniで私のプロジェクトのキューブスワップゲームを作っていますが、私のコードが存在しない配列アドレスにアクセスしようとすると問題が発生します。それにアクセスする。何らかの理由で2回目または3回目のパスでl、m、nを5に設定し、配列が5×5×5単位しかないので何も見つかりません。Unity c#配列のインデックスが範囲外です
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;
}
}
ロギング/デバッグから、3つの変数すべてがある時点で5に設定されていると判断しましたか? – Serlite
ええ、そのスーパーwierd、私は別の3を使用していた私は、jとkは、私は他の方法でループのために使用していたと思って、彼らはどこか他のしかし、lとmとnは5に設定ローカルでmatchcheck() –
このエラーが発生します IndexOutOfRangeException:配列インデックスが範囲外です。 (ラッパーによって管理される)オブジェクト:ElementAddr_3_8(オブジェクト、int、int、int) –