В настоящее время я разрабатываю мета-тактический ИИ для игры в Unity.Я хотел бы создавать экземпляры частиц всякий раз, когда игрок делает ход.Однако частицы замерзают, когда вызывается функция оценки движения ИИ.Какой самый простой способ заставить частицы продолжать двигаться, пока компьютер вычисляет лучший ход?Я прочитал документацию о единой системе заданий, но структуры заданий не могут содержать ссылочные типы, что является проблемой.
public void Play (List<Move> moves) {
int[,] grid = gB.stateGrid;
Move bestMove = new Move();
if (firstTurn)
{
bestMove.col = 4;
bestMove.row = 4;
firstTurn = false;
}
else
{
foreach (Move m in moves)
{
int e = EvalMove(m, level, true, grid, gB.subgridsStates, Mathf.NegativeInfinity, Mathf.Infinity);
m.value = e;
}
int best = moves.Select(x => x.value).Max();
List<Move> bestMoves = moves.Where(x => x.value == best).ToList();
bestMove = bestMoves[Random.Range(0, bestMoves.Count - 1)];
}
gB.PlaceToken(bestMove);
}
Функция вычисляет bestMove среди всех возможных ходов, а затем запрашивает игровое поле.скрипт для размещения соответствующего токена на сетке.