【发布时间】:2014-02-22 16:56:23
【问题描述】:
我正在尝试使用统一游戏引擎创建一个基本的井字游戏。这是我的代码:
public int[] board = new int[9] {
0, 0, 0,
0, 0, 0,
0, 0, 0
};
public bool xTurn = true;
public void OnGUI() {
float width = 75;
float height = 75;
for (int y = 0; y < 3; y++) {
Debug.Log("Value of y = " + y);
for (int x = 0; x < 3; x++) {
Debug.Log("Length of array = " + board.Length);
int boardIndex = (y * 3) + x;
Rect square = new Rect(x * width, y * height, width, height);
Debug.Log ("Value of boardIndex = " + boardIndex + " value of x = " + x);
string owner = board[boardIndex] == 1 ? "X" :
board[boardIndex] == -1 ? "O" : "";
if(GUI.Button(square, owner))
SetControl(boardIndex);
}
}
}
但问题是 board 数组的长度始终为 0,并且在尝试访问 board 数组中的任何值时会出现 ArrayIndexOutOfBounds 异常。
我什至尝试过不同的方法来创建数组。还是一样的结果。谁能告诉我数组长度为 0 的原因。
【问题讨论】:
-
也许您填充数组的代码没有运行?确保代码在一个可以运行的方法中(用断点验证),一旦你确定代码被命中,你应该很好。
-
相信你可以用 public int[] board = { x, x, x };也许尝试以不同的方式初始化它
-
@RyPope:初始化对我来说看起来不错。否则他会得到一个编译错误。
-
@RyPope 两种语法都应该工作。
-
有些东西你没有显示。事实上,
board不可能是0长度。