Задача у меня стоит следующая - поиск пути по неизвестной 3D местности, сам код я уже сделал и проверил, всё работает, коротко принцип такой
public List<Vector3> GetRoute(Vector3 start, Vector3 target){
List<Vector3> Route = new List<Vector3>();
....
while(true){
// логика поиска следующего шага
// проверка с помощью Physics.CheckBox и Physics.BoxCast возможности ступить на следующую клетку
// если да то записываем шаг и пробуем дальше пройти, или записываем что нельзя и подбираем другое направление
}
// логика вычисления "кратчайшего пути" с помощью AStar
return Route;
}
проблема в том что он может обрабатываться как 0.01 сек так и 0.3 сек, последнее конечно далеко не влазит в кадр и вызовет фриз.
Вопрос - как сие чудо распараллелить, запустить фоново, в несколько потоков, в общем как выполнить эту задачу не заморозив основной поток?
Как я понял использовать Job не получится так как Physics работают только в основном потоке (как я понял), корутины тоже нет смысла использовать, всё равно обработки физики только в основном потоке и с таким же успехом можно прерывать цикл на какой-то итерации и продолжать в следующем кадре, переход на ECS конечно не обсуждается так как это всё вообще нужно переделывать полностью...
в общем - какие есть варианты, в какую сторону копать, что лучше использовать, как этим бороться?