Я пытаюсь оптимизировать часть своего кода, где я просматриваю все узлы в сетке, эти узлы хранятся в двумерном массиве, и их расположение в массиве соответствует их положению в мире.
То, что я делаю в части, которую пытаюсь оптимизировать, - это просмотр узлов в сетке и поиск пути A *, определяющий расстояние между узлами. Однако мне не нужно просматривать все узлы в сетке, поскольку у меня установлен диапазон.
То, что у меня было раньше, было таким:
foreach(Node n in grid.grid)
Простой foreach l oop на сетке. Это прекрасно работает на сетках размером около 25x25, но я хочу, чтобы сетки были намного больше.
Вот решение, которое я предложил для его оптимизации:
Node startNode = grid.grid[unit.gridX - (maxRange + unit.movementRange), unit.gridY - (maxRange + unit.movementRange)];
for(int x = 0; x < (unit.movementRange + maxRange) * 2 + 1; x++)
{
for(int y = 0; y < (unit.movementRange + maxRange) * 2 + 1; y++)
{
Node currentNode = grid.grid[startNode.gridX + x, startNode.gridY + y];
При этом он выглядит только в виде квадрата вокруг него, а не всех узлов сетки. Это работает так, как я хочу, но не помогает оптимизации. Теоретически это должно сделать размер сетки несущественным, но это не так. Если я увеличу размер сетки и увеличу время, которое требуется, во всяком случае, решение, которое я придумал, будет немного медленнее.
Я использую Unity 2019.3.0f3.
Любая помощь будет признателен.