Поскольку мы не можем сериализовать многомерные массивы (в Unity), мы ограничены использованием одномерных массивов вместе с математикой для преобразования из x, y пар в индекс и обратно. Вот текущие алгоритмы преобразования:Многомерный массив с одномерным индексом Math
int Width = 3; // Number of cells along the x axis
int Height = 3; // Number of cells along the y axis
GameObject[] Cells = new GameObject[ Width * Height ];
public int CalculateIndex(int x, int y)
{
return y * Width + x;
}
public void CalculateXY(int i, out x, out y)
{
x = i % Width;
y = i/Width;
}
Теперь у меня есть проблема, когда мне нужно создать 3 двухмерную сетку, которая вводит глубины, а также ось Z, но я не могу понять, как привнести изменения в методы выше ... У меня есть ментальный блок.
Я нашел этот пост, который объясняет некоторые из них:
How to "flatten" or "index" 3D-array in 1D array?
Однако мой массив не в высоту, ширину, глубину (у, х, г) порядок, а скорее ШИРИНА, ВЫСОТА , DEPTH (x, y, z). Кроме того, мне нужен алгоритм, чтобы превратить его из индекса обратно в значения x, y, z.
Спасибо, - Джеф
'х + Ширина * (у + высота * г),' х = я% Ширина; y = (i/= ширина)% Высота; z = i/Height'. – PetSerAl
Так что неровные массивы - это не вариант? – Slai
Возможно, этот вопрос может быть вам полезен: http://stackoverflow.com/questions/3613429/algorithm-to-convert-a-multi-dimensional-array-to-a-one-dimensional-array. Я нахожу все возможное, чтобы обойти эти ментальные блоки, визуализируя проблему. – pijemcolu