我有一个类型Cell
的2D数组,它在Unity中创建了一个单元格网格。
private Cell[,] cells;
private void Start()
{
cells = new Cell[mapSize.x, mapSize.y];
}
目前,我可以通过传入匹配的x和y值来访问Map
中的所有单元格。例如:
private Cell GetCell(int x, int y)
{
return cells[x, y];
}
现在我希望通过传入一个单元格对象来获得匹配的x和y值。
我的解决方案是创建像这样的Cell
组件
public class Cell : MonoBehaviour
{
private int x;
private int y;
public void InitCell(int indexX, int indexY) // This gets called when intantiating the Cell
{
x = indexX;
y = indexY;
}
}
但我是否真的必须将这些信息存储在单元组件中?
答案 0 :(得分:2)
你 <。 你也可以做一些像
这样的事情foreach(var cell in cells)
{
if(cell == cellToFind)
{
//Gotcha
}
}
但是将x,y存储在你的单元格中会更快
答案 1 :(得分:2)
你可以使用这样一个简单的函数:
public static Tuple<int, int> CoordinatesOf(Cell[,] cells, Cell value)
{
int w = cells.GetLength(0); // width
int h = cells.GetLength(1); // height
for (int i = 0; i < w; ++i)
{
for (int j = 0;j < h; ++j)
{
if (cells[i, j] == value)
return Tuple.Create(i, j);
}
}
return Tuple.Create(-1, -1);
}