У меня следующая проблема:
В настоящее время я пишу графическое меню, в котором проигрыватель может установить расстояние для деревьев, которые будут отображаться. Он мог выбрать 1000m
, 750m
, 500m
и 250m
.
Я посмотрел на Unity Profiler, а также на Меню статистики и получил от моих тестеров ответ, что выбор расстояния 1000m
дает наилучшие значения FPS
.
Это методя использую, чтобы отключить деревья, основываясь на том, что выбрал игрок:
for (int i = 0; i < allVegetations.Count; i++)
{
// i need this cause Players can chop trees and then they don't exist anymore
if (allVegetations[i] == null)
{
allVegetations.RemoveAt(i);
continue;
}
else
{
if (Vector3.Distance(allVegetations[i].transform.position, player.transform.position) < vegetationRenderDistance)
{
if (!allVegetations[i].activeSelf)
allVegetations[i].SetActive(true);
}
else if (allVegetations[i].activeSelf)
{
allVegetations[i].SetActive(false);
}
}
}
allVegetations
- это List
из GameObjects
, где я добавляю каждое Дерево после того, как оно получило Instantiated
.
vegetationRenderDistance
- это значение, которое устанавливается в графическом меню (как описано выше).
Я отлаживал, если все значения верны, и они верны.
Такжеон отключает все как следует. Но чем больше я отключаю, тем хуже становится моя скорость FPS. На моем ПК я теряю около 5 FPS, один из моих тестеров теряет около 20 FPS.
Что я делаю не так?
Я не использую деревья ландшафта Unity или деревья ландшафта Unity, все мои деревья являются статическими объектами GameObject.