Вступить в клуб →
лёгкаявопросКорутины, async/await и UniTask

Генерация карты в Task.Run падает на первой же строке с transform

async void Start()
{
    await Task.Run(() =>
    {
        var map = GenerateHeights(512);   // чистые вычисления
        terrainRoot.position = Vector3.zero;
        ApplyToTerrain(map);
    });
}

В консоли UnityException: метод можно вызывать только из главного потока. Как переделать?

  • В Task.Run только расчёт, Unity API после await
  • Обернуть обращение к transform в lock
  • Заменить Task.Run на new Thread(...).Start()
  • Сделать terrainRoot статическим полем

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела