-Часики тикают, Шерлок.-Поставь их на таймер...Сегодня вечером:-почему Event Tick - зло?-как использовать таймеры?-сделаем автоматическую стрельбу.ВведениеНовички любят подцеплять различные события на Event Tick. Зачастую выполнять событие каждый кадр не нужно, и к тому же, это сильно влияет на производительность. И тут на помощь приходят Таймеры.Для чего нужны таймеры?Если нужно сделать автоматическую стрельбу.Еслинужно сделать обводку предмета, когда игрок на него смотрит.Если нужно реализовать отсчёт времени.Как пользоваться?Есть 2 вида таймеров: для функций и для Event'ов. Я покажу на примере Event таймера.Входные данные:Event - для подключения вызываемого Event'а.Time - через какое время будет вызван Event.Looping - будет ли вызов Event'а повторяться.Выходные данные :ReturnValue - для управления таймером.Работаем!Что мы хотим? Автоматическую стрельбу!Как это сделать?В блупринте FirstPersonCharacter найди следующий код:Тут по нажатию кнопки, отвечающей за InputFire производится единичный выстрел. А я хочу стрелять постоянно. Для этого нам нужно поставить таймер, чтобы через каждые, ну, допустим, пол секунды производился повторный выстрел.Для этого наш InputFire должен запустить этот самый таймер. А если кнопка отпущена - очистить его.Создай новый Event, который будет производить выстрел, (так как наш InputFire будет занят запуском таймера).Должно получиться так:Теперь создай Timer By Event. Подключи к нему наш EventShoot через красный квадратик и InputFire через обычный вход. Укажи время, через которое будет производиться второй выстрел. И поставь галочку напротив Looping.Должно получиться так:Теперь когда я нажимаю на кнопку выстрела, я начинаю постоянно стрелять. Но я хочу стрелять только когда кнопка нажата. Для этого делаем следующее:Что тут происходит? Когда я нажимаю кнопку выстрела, запускается таймер и через указанное время выполняет Event, который мы к нему подцепили. Когда я отпускаю кнопку, таймер очищается. Проверяем:Шикарно!ВАЖНО!!!!Таймер начинает отсчитывать время СРАЗУ после вызова Event'а, а не после его окончания. То есть, если у вас в Event'е есть Delay в 5 секунд, а таймер у вас поставлен на 0,5 секунд, то таймер всё равно отсчитает 0,5 секунд, а не 5,5.ЗаключениеСтарайтесь не использовать Event Tick. Где возможно - замените его на Timer. Предлагайте темы для статей в комментарии. У меня в голове вертится мысль сделать стрим, где мы реализуем какой-нибудь простой проект. Мне просто нужно знать - "стоит ли игра свеч" и сколько примерно на стриме будет человек. Время стрима и все остальные вопросы можем согласовать в моём паблике ВКонтакте:vk.comNamedvice GameDevСпасибо, что прочитали!
Есть три стадии развития программиста на UE4.
1) Программист использует тик, где это только возможно
2) Программист боится использовать тик и старается этого не делать вообще
3) Программист использует тик и не парится. .)
имхо - если у тебя больше пары сотен объектов движется, игроки не будут вам благодарны
Вот так использовать ссылку на объекты не стоит. Сделай переменную и используй её, а то и сам запутаешься и макаронов наделаешь.
Дабы не забивать статью лишней информацией, в данном случае этим можно пренебречь.
Неочевидная деталь: в Set Timer by Function Name можно вписывать не только имя функции, но и имя события.
Спасибо! Завтра посмотрю и поправлю.
Да эвент-тики зло