0

因此,我正在Unity 3D中使用UnityScript尝试使用细胞自动机制作洞穴生成器。这是我的问题,我创建了两个变量,宽度和高度,他们需要是我的二维数组的大小。我也创建了一个函数来启动时生成映射,所以数组需要在启动时初始化。我知道我需要某种for循环使用.length和变量之一,但我不完全知道如何做到这一点。任何帮助将是伟大的!在UnityScript中制作2D数组通过制作数组阵列

+0

发布您的代码,我们会帮助 –

+0

我我们发现使用一维数组并且以二维方式解决这个问题通常更容易(在JS中,计算坐标)。 – ssube

+0

将JavaScript的引用更改为UnityScript,因为这是技术上的原因。 http://wiki.unity3d.com/index.php/UnityScript_versus_JavaScript – user3071284

回答

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] 

这里是你如何生成给定的高度和宽度的二维数组

​​
+0

数组的长度和宽度由变量决定,所以我不认为我可以在不使用循环的情况下实例化这个数组。例如,我的数组的长度可以是10-100之间的任意值,具体取决于生成的结果,因此变量需要是数组的长度。之后,我需要使第一个数组中的每个值都有一个数组,其大小等于第二个变量。直到我运行代码之后,才会知道长度和高度。这就是为什么我认为我需要使用循环创建数组。感谢您花时间看! –

+0

我编辑我的问题,我认为回答你的问题。如果仍然无法帮助,请发布您的代码样本。 –

+0

感谢您的帮助罗伯特! –

0

嗯,团结你只初始化它们是这样的:

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

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

这将让你在编辑器中指定的高度和宽度(或程序)