Полезное

Мы Вконтакте

Discord канал

#
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 46
Здравствуйте. Никогда не думал, что столкнусь с проблемой оптимизации из-за кода, а не из-за графики (ничего сложного в проекте нет) или из-за большого количества персонажей на сцене (60 actor, в зоне видимости не более 10, обычно вообще 2-3). В общем проблема следующая: при нажатии на кнопку запускается цикл for each loop для массива static mesh component. В цикле идут подряд следующие функции: branch (visibility component), branch (равен ли конкретному типу static mesh componenta), branch (ищем компонент в другом массиве с функцией find, выводим эту функцию через get из булеевого массива и отправляем в branch), далее функция spawn actor, затем ещё одна spawn actor, затем достаём переменную из первого actora и сохраняем в неё стрелка (pawn переменная), затем выводится функция set array elem для булевого массива и после устанавливается set timer by event на одну секунду для события в виде цикла for each loop для булевого массива с set array elem для каждого элемента. Далее всё выше изложенное повторяется для второго, третьего, четвёртого и последующих элементов массива static mesh component.
Если нажимать кнопку стрельбы (это код для выстрела), то при наличии всего четырёх элементов в массиве заметны тормоза на телефоне (Sony Xperia XA1 Plus), а при девяти - десяти начинает (правда менее заметно) тормозить компьютер при тестировании в редакторе.
В общем код выше должен при нажатии кнопки атаки перебирать все пушки игрока и если они могут выстрелить (не повреждены и время перезарядки прошло), то производить выстрел (создавать actor пуля и создавать actor с particle component с взрывом) и устанавливать таймер на перезарядку.
Почему этот код тормозит и как его можно ускорить?

P. S. Фотографию кода прикрепить не могу, так как на кнопку "Загрузить картинку" сайт не реагирует, хотя блокировщик рекламы в браузере (писали, что в нём может быть причина) даже не установлен.

Закинул ссылки на сайт. Вот ссылки:
https://blueprintue.com/blueprint/yozfowhg/
https://blueprintue.com/blueprint/5-0xogc9/
Первая на основной код, вторая на подкод (macro функцию). Теперь код наглядно виден (правда все переменные отметились синим, но думаю понятно, что от location идёт жёлтая vector-переменная, а от rotation - сиреневая).
Последний раз редактировалось Alexander2002 24 мар 2020, 12:32, всего редактировалось 1 раз.
Аватара пользователя
Пользователь
Сообщения: 3
https://blueprintue.com/- можно сюда закинуть свои ноды через ctrl-c + ctrl-v.
Я сейчас как минимум насчитал около 4 циклов в одном, то есть около 16 проходов + спавн, что является тяжелой функцией. Если зальешь нормально ноды, могу посмотреть и подсказать.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница