我很难搞清楚如何正确设置我的数组。设置一个没有数据重复的多维数组
我有一个基本的瓷砖阵列设置为我的阵列grid[,]
这工作正常。
现在我正在尝试为网格之间的边缘创建一个数组,以便放置墙。
所以我有这个:walls[,][,]
其中每个[,]
是一个网格位置,因此每个墙分隔2个网格位置。
这里的最终目标是,我想有两个网格点墙上阵列说A
和B
,这样我可以再做:
Wall wallObject = walls[A.x,A.y][B.x,B.y];
希望是有道理的。我试图做这样的事情:
' 现在,因为每次1片可以有4个墙我试图建立我的墙阵列喜欢这一点,但不能工作了语法正确地做到这一点:
grids = new Tile[x,y];
walls = new Wall[grids.GetLength(0), grids.GetLength(1)][walls.GetLength(0) * 4, walls.GetLength(1) * 4]; // invalid rank specifier ERROR
for(int i = 0; i < x; i++) {
for(int j = 0; j < y; j++) {
grids[i, j] = new Tile(new Vector3(i, 0, j));
foreach (Vector3 gridNeighbour in AdjacentTiles(new Vector3(i, 0, j))) //4 directions
{
if (!InGrid(gridNeighbour)) continue;
walls[i, j][(int)gridNeighbour.x, (int)gridNeighbour.z] = new Wall(grid[i,j],grid[(int)gridNeighbour.x,(int)gridNeighbour.z]);
}
}}
我在第二行得到一个错误,不确定写入它的正确方法。 我也相当肯定我的逻辑是错误的,因为这个数据设置,我认为会给我的墙壁的双倍数据,我会得到wall[gridA][gridB]
和wall[gridB][gridA]
,我想避免,但我不知道如何。
我真的不认为你需要一个4维阵列,假设我理解你是对的。如果我不是,你能更好地解释为什么你需要一个4维数组? – Unlocked
一个给定的墙分离了两块瓦'A'和'B',所以如果我想找到一个分隔两个特定瓦的墙,那么这个想法就是从像墙那样的阵列中抓住它[Ax,Ay] [Bx,By] 希望有道理。我推测我需要这种数组结构来完成它。 – Sir