0

所以我在 Unity 3D 中使用 UnityScript 尝试使用元胞自动机制作洞穴生成器。这是我的问题,我创建了两个变量,宽度和高度,它们需要是我的二维数组的大小。我还创建了一个函数来在启动时生成地图,因此需要在启动时初始化数组。我知道我需要某种for循环使用.length和其中一个变量,但我不完全确定如何做到这一点。任何帮助都会很棒!

4

2 回答 2

0

如果二维数组中的所有行的长度都相同,则不需要编写循环,只需检查任意行的长度,即

var arr = [
  [1, 2, 3],
  [1, 2, 3],
  [1, 2, 3],
  [1, 2, 3],
];
var height = arr.length; //4
var width = arr[0].length; //3

您需要循环的一个示例是,如果所有宽度的长度都不同,即

var arr = [
  [1, 2, 3],
  [1, 2, 3, 4]
];

var widths = [];
for (var i = 0; i < arr.length; i++) {
  widths.push(arr[i].length);
}
console.log(widths); // [3, 4]

这是在给定高度和宽度的情况下生成二维数组的方法

var height = 5,
width = 4;

var arr = [];
for (var i = 0; i < height; i++) {
  arr[i] = [];
  for (var j = 0; j < width; j++) {
    arr[i][j] = "x";
  }
}
console.log(arr);

// [ [ 'x', 'x', 'x', 'x' ],
//   [ 'x', 'x', 'x', 'x' ],
//   [ 'x', 'x', 'x', 'x' ],
//   [ 'x', 'x', 'x', 'x' ],
//   [ 'x', 'x', 'x', 'x' ] ]
于 2015-11-05T15:41:28.690 回答
0

嗯,在 Unity 中,您只需像这样初始化它们:

int gridSpace[,];
public int height;
public int width;

void Start()
{
   gridSpace = new int[height,width];
   MakeMapStuffHappen();
}

这将允许您在编辑器中(或以编程方式)指定高度和宽度

于 2016-01-14T18:27:55.190 回答