Обновление ландшафта отстает от единства С# - Насколько эффективно обновлять ландшафт?

В игре игроки могут рубить деревья. Затем я создаю экземпляр падающего дерева на его месте.

Я удаляю дерево из списка ландшафта и обновляю ландшафт следующим образом:

        var treeInstancesToRemove = new List<TreeInstance>(terrain.treeInstances);
        treeInstancesToRemove.RemoveAt(closestTreeIndex);
        terrain.treeInstances = treeInstancesToRemove.ToArray();

        // I refresh the terrain so the collider gets removed...
        float[,] heights = terrain.GetHeights(0, 0, 0, 0);
        terrain.SetHeights(0, 0, heights);

Ландшафт ОЧЕНЬ БОЛЬШОЙ... Это означает, что всякий раз, когда дерево рубится, игра зависает на несколько секунд, а затем возобновляется (по мере обновления). Есть ли более быстрый или эффективный способ, на который я мог бы взглянуть? Заморозки после каждого срубленного дерева — это не идеально?

ЗАРАНЕЕ БОЛЬШОЕ СПАСИБО!


person Mingan Beyleveld    schedule 01.12.2014    source источник


Ответы (2)


Лучшее, что я могу предложить, — это разделить мир на куски, которые вы можете обновлять по отдельности. Либо так, либо обновить коллайдер в отдельном потоке от основного.

person Benjamin James Drury    schedule 01.12.2014
comment
Мне нравится идея чанков, я просто НЕ ПОНИМАЮ, как это сделать в Unity! Я проведу небольшое исследование... - person Mingan Beyleveld; 01.12.2014

person    schedule
comment
Этот ответ можно улучшить, добавив некоторое содержимое, не связанное с кодом. - person Thomas; 07.10.2015