Найти тему
GameDevPadlik

Unreal Engine 4: Варианты циклов с задержкой на BluePrint

Оглавление
Не уверен что в 5-той версии будут работать те же ноды, по этому сразу оговорюсь что изучаю UE на версии 4.27.2. И это брошюрка для данной версии, но сия новость обновляемая так что при нахождении дополнительных вариантов сделать цикл с задержкой обязательно обновлю данный пост.

Данные примеры на решении задачи с мигающей лампочкой в курсе разработчика игр Unreal Engine 4.27.

— Делаем через Timer с проверкой
— Делаем через стандартный цикл Do N
— Создаем модифицированный цикл ForLoop

Делаем через Timer by Event

Фото: Скриншот с программы Unreal Engine 4.27
Фото: Скриншот с программы Unreal Engine 4.27

В данной сборке Экшен Event Begin Play Срабатывает при старте уровня, Нода Set Time By Event установлена в режим цикла (looping) в нее передается параметр задержки срабатывания. Далее из временной ноды создается новый Ивент (Custom Event) который я сразу пустил на проверку условий выполнения срабатывания. Для того чтобы при установке в параметрах на количество срабатываний 0, лампочка не загоралась. Ну и само выполнение включения и выключения я сделал через ноду Flip flop, которая при каждом обращении к ней переключает ветки выполнения. Flip Flop можно смело заменить на Toggle Visibility и ничего не изменится.

В условии выполнения цикла финальное число мерцаний я умножаю на 2 потому что считается каждое срабатывание тика, включилась лампочка (+1), выключилась еще (+1). Если не нужно выключение или сами решить хотите, удалите ноду Int * Int.

Делаем через стандартный цикл Do N

Фото: Скриншот с программы Unreal Engine 4.27 | Стандартный цикл Do N
Фото: Скриншот с программы Unreal Engine 4.27 | Стандартный цикл Do N
Фото: Скриншот с программы Unreal Engine 4.27 | Стандартный цикл Do N
Фото: Скриншот с программы Unreal Engine 4.27 | Стандартный цикл Do N

Нода Do N - указывает количество повторений.
Нода Toggle - управляет параметром Visibility источника света в Акторе
Нода Delay - Задержка между миганиями
p.s. Нода Do N сама себя не вызывает, это самая частая ошибка ее использования, эта нода ограничивает количество раз которое вызовут её.

Создадим новый макрос цикла с задержкой (Delay)

p.s. Если нужен итог, промотайте ниже до заголовка Итоговый макрос цикла с задержкой.

1. Правой кнопкой в контент браузере Blueprints > Blueprint Macro Library

Фото: Скриншот с программы Unreal Engine 4.27
Фото: Скриншот с программы Unreal Engine 4.27

2. Копируем всю логику из стандартного макроса цикла, и ставим Delay после проверки Branch

Фото: Скриншот с программы Unreal Engine 4.27 | В поле Duration функции Delay нужно подтягивать тип данных с плавающей запятой (Float)
Фото: Скриншот с программы Unreal Engine 4.27 | В поле Duration функции Delay нужно подтягивать тип данных с плавающей запятой (Float)

Итоговый макрос цикла с задержкой.

Фото: Скриншот с программы Unreal Engine 4.27 | Макрос цикла с задержкой, модернизированный ForLoop в Blueprints Unreal Engine 4.27.2
Фото: Скриншот с программы Unreal Engine 4.27 | Макрос цикла с задержкой, модернизированный ForLoop в Blueprints Unreal Engine 4.27.2

Стандартный макрос цикла

Фото: Скриншот с программы Unreal Engine 4.27 | Стандартный цикл ForLoop в Blueprints Unreal Engine 4.27.2
!! Важно !! Нужно понимать что цикл в Blueprint это макрос, вместо макроса подставляется код который внутри него.
Фото: Скриншот с программы Unreal Engine 4.27 | Стандартный цикл ForLoop в Blueprints Unreal Engine 4.27.2 !! Важно !! Нужно понимать что цикл в Blueprint это макрос, вместо макроса подставляется код который внутри него.

Видео версия всего выше изложенного: