所以我使用UnityScript在Unity 3D中工作,试图使用细胞自动机制作洞穴生成器。这是我的问题,我创建了两个变量,宽度和高度,它们需要是我的2D数组的大小。我还创建了一个在启动时生成映射的函数,因此需要在启动时初始化该数组。我知道我需要某种for
循环使用.length
和其中一个变量,但我不完全确定如何做到这一点。任何帮助都会很棒!
答案 0 :(得分:0)
如果2D数组中的所有行都是相同的长度,则不需要编写循环,只需检查任意行的长度,即
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' ] ]
答案 1 :(得分:0)
呃,在Unity中你只需要像这样初始化它们:
int gridSpace[,];
public int height;
public int width;
void Start()
{
gridSpace = new int[height,width];
MakeMapStuffHappen();
}
这将允许您在编辑器中(或以编程方式)指定高度和宽度