Для удобства получения списка камер установим для них общий тег. Для этого выберем камеру на уровне, и во вкладке Details поставим для нее тег.
Нода Get All Actors with Tag не всегда возвращает объекты в одном и том же порядке, поэтому, чтобы последовательность камер была одинакова между разными запусками, полученный список необходимо отсортировать. Для сортировки списка мы использовали алгоритм пузырька, сравнивая имена камер.
Чтобы запустить алгоритм из игровой консоли, создадим кастомный Event, выделим его ноду в редакторе, во вкладке Details включим галочку Call in Editor и привяжем к нему все последующие шаги алгоритма.
Так как I/O процессы тоже оказывают влияние на производительность, возможно, стоит добавить некоторую задержку при переключении камер перед включением Trace.Resume, чтобы дать время UE очистить память от объектов из предыдущей камеры.
вы святые люди
Спасибо. Добавил в закладки. Надеюсь, цикл статей продолжится и его увидит как можно большее количество инди-разработчиков. И мы наконец-то получим оптимизированные игры на UE. Может быть, тогда этот движок станут меньше ругать. И хотелось бы поподробнее разузнать о "правильном" построении уровней для лучшей оптимизации.
Мы сами только постигаем этот процесс. В процессе, пришлось полностью переделать свет на уровне, но это того стоило. В следующей статье или черз одну расскажем.
А может есть смысл использовать не bluerprint, а на прямую писать в с++? Я под копот не заглядывал, но у меня есть чувство, что они билдятся во что-то не очень годное для прода? Интересно узнать как работает сборщик мусора с ними, он же не запускается автоматически, а я не видел ноды, которая могла бы его очищать. Возможно они сами работают сложнее, например операция сложения в плюсах это одна операция, а в бп их с десяток.
Сборщик мусора работает и с Blueprint. Вот есть заметка в документации касательно производительсноти Blueprint - https://dev.epicgames.com/documentation/en-us/unreal-engine/coding-in-unreal-engine-blueprint-vs.-cplusplus#performanceconcerns
Добавлю в закладки, тк я мельком прочитал. :)