Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 通过生成数组数组在UnityScript中生成二维数组_Arrays_Multidimensional Array_Unity3d_Unityscript_Cellular Automata - Fatal编程技术网

Arrays 通过生成数组数组在UnityScript中生成二维数组

Arrays 通过生成数组数组在UnityScript中生成二维数组,arrays,multidimensional-array,unity3d,unityscript,cellular-automata,Arrays,Multidimensional Array,Unity3d,Unityscript,Cellular Automata,所以我在Unity3D中与UnityScript合作,试图用细胞自动机制作一个洞穴生成器。这是我的问题,我已经创建了两个变量,宽度和高度,它们需要是我的2D数组的大小。我还创建了一个函数,用于在启动时生成映射,因此需要在启动时初始化数组。我知道我需要使用.length和其中一个变量对循环执行某种,但我不完全确定如何执行此操作。任何帮助都会很好 如果2D数组中的所有行长度相同,则无需编写循环,只需检查任意行的长度,即 var arr = [ [1, 2, 3], [1, 2, 3],

所以我在Unity3D中与UnityScript合作,试图用细胞自动机制作一个洞穴生成器。这是我的问题,我已经创建了两个变量,宽度和高度,它们需要是我的2D数组的大小。我还创建了一个函数,用于在启动时生成映射,因此需要在启动时初始化数组。我知道我需要使用
.length
和其中一个变量对
循环执行某种
,但我不完全确定如何执行此操作。任何帮助都会很好

如果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-arr=[
[1, 2, 3],
[1, 2, 3, 4]
];
风险值宽度=[];
对于(变量i=0;i
下面是如何在给定高度和宽度的情况下生成二维数组

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' ] ]
var高度=5,
宽度=4;
var-arr=[];
对于(变量i=0;i
呃,在Unity中,您只需像这样初始化它们:

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

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

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

发布您的代码,我们将提供帮助。我发现,使用1D数组并对其进行二维寻址通常更容易(在JS中,计算坐标)。将对JavaScript的引用更改为UnityScript,因为技术上是这样的。数组的长度和宽度是由变量决定的,所以我认为如果不使用循环,就不能实例化这个数组。例如,我的数组的长度可以是10-100,这取决于生成的方式,因此该变量需要是数组的长度。之后,我需要使第一个数组中的每个值都有一个大小等于第二个变量的数组。在我运行代码之前,长度和高度都是未知的。这就是为什么我认为我需要使用循环来创建数组。谢谢你花时间看!我把我的问题编辑成我认为能回答你问题的内容。如果这仍然没有帮助,请发布您的代码示例。谢谢您的帮助,罗伯特!