Я задаюсь вопросом о том, как лучше всего снизить нагрузку на процессор и память для областей игрового мира, которые не нужно обновлять каждый кадр.
Я только начал рассматривать эту проблему, как и я В настоящее время внедряю систему обнаружения теней с помощью Raycasts.
Моя проблема заключается в следующем:
- У меня может быть около 100 источников света на моем уровне, которые в каждом кадре посылают Raycast соседним персонажам, чтобы определить, находятся ли эти символы в тени.
Моя игра - игра с низким поли P C, и я понимаю, что накладные расходы от Raycasting не так уж велики c. Так что это не главная проблема. Но я все еще не уверен в лучшем подходе к оптимизации этого.
Я думал о нескольких решениях, но не уверен, существует ли «стандарт», скажем.
1. выйдите из обновления l oop, если игрок слишком далеко
void Update() {
if (Vector3.Distance(playerPos, transform.position) > someRadius) {
return
}
}
Это наиболее очевидное решение с еще более очевидными проблемами.
- Это обновление l oop будет продолжать загружать циклы процессора, выполняя 2 вычисления для каждого кадра, для каждой светлой точки.
2. Disable Light gameObjects, когда игрок находится слишком далеко
Этот метод более эффективен с точки зрения загрузки ЦП, так как он будет отменен. Однако я все еще занимаюсь ненужной памятью.
Чтобы сделать это решение более масштабируемым, мне нужно было бы разработать какой-то «активатор», который отслеживает игровые объекты, которые должны быть включены / отключены в зависимости от игрока. должность.
Но на данный момент я знаю, что заново изобретаю колесо, и я уверен, что для этого есть отраслевой стандарт.
Есть ли альтернатива включению / отключению?
Я вижу, как многие разработчики игр говорят о физической выгрузке областей своей игры из памяти и записи этих областей на диск, когда игрок не поблизости.
Интересно, достигается ли это простым уничтожением и повторным созданием объектов.
Вопрос
Является ли Unity оппонентом по этому поводу?
На странице здесь приведен пример, аналогичный моему первому решению. Но они говорят о сотнях тысяч обновлений на кадр.
Может быть, мне не нужно беспокоиться так сильно, как я думаю
Спасибо!