Друзья, приветствую, с Вами Будуев Антон. В данной статье мы обсудим Blueprint-функции Activate, Deactivate, Is Active, Set Active и Toggle Active, отвечающие в Unreal Engine (UE4, UE5) за активацию / деактивацию компонентов.
При разборе данных функций мы будем использовать шаблон проекта игры от третьего лица игрового движка Анрил Энджин (UE5), а конкретно блюпринт BP_ThirdPersonCharacter по пути /All/Game/ThirdPerson/Blueprints.
Поскольку обсуждаемые функции доступны в классе Актор-компонента, я рекомендую вам предварительно ознакомиться с концепцией компонентов в Unreal Engine, а также с самим классом Actor Component.
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
Unreal Engine Activate / Deactivate
В Unreal Engine функция Activate используется для включения или активации компонентов, которые были созданы неактивными или деактивированы ранее. То есть она устанавливает компонент в активное состояние. Активация компонента обычно означает, что он начинает выполнять свой логический функционал.
Вообще функции активации / деактивации часто используют для компонентов движения персонажа, чтобы на некоторое время деактивировать движение, забрав управление персонажем у игрока. Чтобы затем вновь активировать его, следуя определённой игровой логике.
Данная функция работает с компонентами класса Actor Component, а значит, и со всеми другими компонентами, так как класс Актор-компонент является базовым классом вообще для любых других классов компонентов.
Но важно отметить, что для работы этой функции у компонента в целом должна быть опция активации в меню Details (не у всех она имеется).
Функция Deactivate, наоборот, деактивирует компонент, выключая работу его логики.
Перейдём к практике и попробуем работу функций Activate и Deactivate на персонаже Blueprint-класса BP_ThirdPersonCharacter. Разместим в нём событие Key F, срабатывающее при нажатии на клавишу F, и далее поочерёдно с помощью ноды Flip Flop будем вызывать функции Activate и Deactivate для компонента движения Character Movement. Причём первой вызовем Deactivate, так как Character Movement по умолчанию активирован.
Итак, при старте игры персонаж при помощи Character Movement может двигаться, бегать и прыгать. Но следует только нажать на F в первый раз, так компонент Character Movement деактивируется функцией Deactivate, и персонаж остановится. В моём примере при прыжке персонажа я нажал на F, и персонаж просто повис в воздухе, так как компонент движения Character Movement был деактивирован и, следовательно, логика гравитации была остановлена. Далее при повторном нажатии на F сработает функция Activate, и логика компонента движения опять активируется. Персонаж упадёт на пол.
Скриншот
Код на BlueprintUE
Is Active
Функция Is Active в Анрил Энджин возвращает информацию о том, активирован или нет текущий компонент. Соответственно, если она возвращает значение True, значит компонент активирован, если False — деактивирован.
В практическом примере выше как раз с помощью функции Is Active и выводится информация об активации компонента Character Movement. Данный код я также расположил в персонаже BP_ThirdPersonCharacter.
Скриншот
Код на BlueprintUE
Set Active
Функция Set Active является Blueprint аналогом опции Auto Activate в меню Details настроек компонента, позволяя лишь одним своим параметром New Active активировать или деактивировать компонент. По своей сути она заменяет функции Activate и Deactivate.
Вышеприведенный практический пример также можно было бы реализовать через Set Active. Установив её параметр New Active в False при деактивации компонента движения Character Movement и в значение True — при его активации.
Скриншот
Код на BlueprintUE
Toggle Active
Функция Toggle Active в Unreal Engine (UE4, UE5) фактически является переключателем активированности компонента. То есть при каждом новом её вызове она будет производить противоположное предыдущей операции действие. Если в предыдущий её вызов она активировала компонент, то в текущем вызове она его деактивирует. И, соответственно, при следующем вызове вновь опять активирует.
Код вышеприведённой практики с использованием функции Toggle Active примет более простой вид, так как уже не потребуется использовать переключатель Flip Flop, да и активировать/деактивировать компонент уже можно будет не двумя функциями, а только одной — Toggle Active.
Скриншот
Код на BlueprintUE
Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.