Друзья, приветствую, с Вами Будуев Антон. В этой статье мы обсудим Blueprint-функцию (метод) Set Active в Unreal Engine (UE4, UE5), задающую свойство активации компонента.
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
Set Active

Blueprint-функция Set Active в Unreal Engine — это метод класса Actor Component, который устанавливает новое состояние активности компонента, независимо от его текущего состояния. Функция вызывается как из C++, так и из Blueprints, и позволяет активировать или деактивировать компонент на основе переданного параметра.
Перевод официальной справки: функция Set Active — задаёт свойство компонента: активен или нет.
Использование функции удобно при динамическом управлении состоянием компонентов в ответ на игровые события, например:
- при переключении между режимами игры;
- при изменении состояния объекта (например, «включить/выключить»);
- при сбросе состояния уровня или персонажа.
Параметры функции
- Target (Actor Component) — ссылка на компонент, для которого необходимо установить новое состояние активности.
- New Active (bool = False) — новое состояние активности компонента. True: компоненту будет установлено состояние активности. False: компоненту будет установлено состояние неактивности.
- Reset (bool = False) — если установлено значение True, компоненту будет установлено состояние активности, даже если внутренний метод движка ShouldActivate() вернёт False. Параметр определяет, должна ли операция установки состояния активности игнорировать текущее состояние компонента и условия активированности.
Reset = False (по умолчанию): компоненту будет установлено состояние активности, только если он ещё не активен (функция Is Active возвращает False). Это стандартный способ установки состояние активности компонента, чтобы избежать повторной активации.
Reset = True: компоненту будет установлено состояние активности безусловно, даже если он уже был активным.
* ShouldActivate() — виртуальная функция, которая по умолчанию проверяет, не активен ли уже компонент. Может быть переопределена в дочерних классах для более сложных условий.
Как Set Active работает внутри
Рассмотрим, как функция Set Active работает внутри Unreal Engine. Также обсудим внутренний метод движка ShouldActivate(), который был упомянут в описании параметра Reset.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 void UActorComponent::SetActive(bool bNewActive, bool bReset)
{
// Проверяем, нужно ли активировать или деактивировать компонент.
// Значение параметра bNewActive определяет новое состояние активности:
// - true → вызывается Activate()
// - false → вызывается Deactivate()
if (bNewActive)
{
// Компонент должен быть активирован.
// Вызываем метод Activate(), передавая параметр bReset.
// Если bReset == true, активация происходит безусловно, игнорируя текущее состояние.
// Если bReset == false, активация выполняется только если ShouldActivate() вернёт true.
Activate(bReset);
}
else
{
// Компонент должен быть деактивирован.
// Вызываем метод Deactivate(), который:
// - отключает тик компонента
// - устанавливает флаг активности в false
// - вызывает событие OnComponentDeactivated
Deactivate();
}
}
Логика работы функции:
- Если New Active == True: вызывается метод Activate, который активирует компонент, включая его Tick (если разрешён), устанавливая свойство компонента Is Active в значение True и вызывая диспетчер события On Component Activated (событие, доступно как в C++, так и в Blueprint и используется для запуска пользовательской логики после активации компонента).
- Если New Active == False: вызывается метод Deactivate, который деактивирует компонент, отключая его Tick, устанавливая свойство компонента Is Active в значение False и вызывая диспетчер события On Component Deactivated (событие, доступно как в C++, так и в Blueprint и используется для запуска пользовательской логики после деактивации компонента).
Смежные функции
- Activate — активирует компонент (если он не был активным ранее).
- Deactivate — деактивирует компонент, останавливая его работу и отключая все связанные действия.
- Set Auto Activate — определяет, будет ли компонент автоматически активирован при начале игры.
- Toggle Active — переключает текущее состояние активности компонента
- Is Active — возвращает текущее состояние активности компонента.
Пример использования функции Set Active
C++
Устанавливаем компоненту движения персонажа состояние неактивности по нажатию клавиши F на клавиатуре. И обратная ситуация: устанавливаем компоненту движения персонажа состояние активности по нажатию клавиши E на клавиатуре.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 void AMyCharacter::OnFKeyPressed()
{
if (MovementComponent) // Убеждаемся, что компонент существует
{
MovementComponent->SetActive(false); // Устанавливаем компоненту состояние неактивности
}
}
void AMyCharacter::OnEKeyPressed()
{
if (MovementComponent) // Убеждаемся, что компонент существует
{
MovementComponent->SetActive(true, true); // Принудительно устанавливаем компоненту состояние активности
}
}
Blueprints
- Загрузите шаблон игры Unreal Engine (UE5) от третьего лица. Откройте блюпринт персонажа BP_ThirdPersonCharacter по пути /All/Game/ThirdPerson/Blueprints.
- В Event Graph разместите событие Key F (событие, срабатывающее при нажатии клавиши F на клавиатуре) и Key Е (событие, срабатывающее при нажатии клавиши E на клавиатуре).
- Перетащите на поле Event Graph ссылку на компонент Character Movement и из этой ссылки получите функцию Set Active 2 раза.
- Подключите первую функцию Set Active к событию Key F и оставьте параметр New Active в значении False. Таким образом, при нажатии на клавишу F, компонент движения деактивируется.
- Подключите вторую функцию Set Active к событию Key E и установите параметр New Active в значении True. Таким образом, при нажатии на клавишу E, компонент движения активируется.

Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.