Генерация карты в 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 статическим полем
