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

Blueprint-функция Set Auto Activate в Unreal Engine — это метод класса Actor Component, который устанавливает, будет ли компонент автоматически активирован при начале игры, если его состояние активности не было изменено вручную.
Функция используется только в Construction Scripts Актора-владельца и вызывается как из C++, так и из Blueprints.
Перевод официальной справки: функция Set Auto Activate — устанавливает, должен ли компонент автоматически активироваться или нет. Использование безопасно только в Construction Scripts.
Данный метод позволяет:
- управлять автоматической активацией компонента;
- определять, должен ли компонент быть активным по умолчанию, как только Актор, к которому он привязан, инициализируется в игре.
Параметры функции
- Target (Actor Component) — ссылка на компонент, для которого необходимо установить правило автоматической активации при старте игры.
- New Auto Activate (bool = False) — новое значение флага автозапуска. True: компонент будет автоматически активирован при старте игры (если не был изменён вручную). False: компонент не будет активирован автоматически.
Как Set Auto Activate работает внутри
Рассмотрим, как функция Set Auto Activate работает внутри Unreal Engine.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 void UActorComponent::SetAutoActivate(bool bNewAutoActivate)
{
// Проверяем, можно ли безопасно изменить флаг автозапуска компонента.
// Это возможно только если:
// 1. Компонент ещё не зарегистрирован в мире (bRegistered == false), ИЛИ
// 2. Владеющий Актор выполняет свой конструктор (User Construction Script)
if (!bRegistered || IsOwnerRunningUserConstructionScript())
{
// Устанавливаем новое значение флага автозапуска.
// Если bNewAutoActivate == true, компонент будет автоматически активирован при старте игры.
// Если bNewAutoActivate == false, компонент останется неактивным до вызова Activate() вручную.
bAutoActivate = bNewAutoActivate;
}
else
{
// Если компонент уже зарегистрирован, а вызов происходит во время игры,
// выводим предупреждение в лог и консоль Unreal Engine.
UE_LOG(LogActorComponent, Warning,
TEXT("SetAutoActivate called on component %s after construction!"), *GetFullName());
}
}
Логика работы функции:
- Проверка безопасности изменения параметра. Параметр автоматической активации может быть изменён только до регистрации компонента в мире или во время работы конструктора скрипта Актора-владельца (Construction Script).
if (!bRegistered || IsOwnerRunningUserConstructionScript())
* bRegistered — флаг, указывающий, зарегистрирован ли компонент в мире.
* IsOwnerRunningUserConstructionScript() — проверяет, выполняется ли пользовательский конструктор владельца (Construction Script).
Если одно из условий истинно, а именно регистрация компонента в мире ещё не производилась или Актор-владелец находится в стадии выполнения конструктора скрипта, то изменения свойства авто активации разрешены. Это ограничение существует потому, что: автоматическая активация (bAutoActivate) учитывается только один раз, когда Актор создаётся в мире. После регистрации компонента изменять это значение уже не имеет смысла.
- Установка нового значения. Сохраняем новое значение в свойство компонента bAutoActivate. Это свойство влияет на то, будет ли компонент автоматически активирован при старте игры.
bAutoActivate = bNewAutoActivate;
- Предупреждение при некорректном вызове. Выводится, если попытаться изменить bAutoActivate после регистрации компонента.
UE_LOG(LogActorComponent, Warning, TEXT("SetAutoActivate called on component %s after construction!"), *GetFullName());
Смежные функции
- Activate — активирует компонент (если он не был активным ранее).
- Deactivate — деактивирует компонент, останавливая его работу и отключая все связанные действия.
- Set Active — устанавливает новое состояние активности компонента.
- Toggle Active — переключает текущее состояние активности компонента
- Is Active — возвращает текущее состояние активности компонента.
Пример использования функции Set Auto Activate
C++
Устанавливаем автоматическую активацию пользовательского компонента радара.
1
2
3
4
5
6
7
8
9 // Проверяем, является ли указатель на компонент радара допустимым (не null)
if (IsValid(RadarComponent))
{
// Устанавливаем, чтобы компонент радара автоматически активировался при начале игры.
// Это означает, что если в редакторе или где-то ещё не было изменено состояние активности,
// то при старте игры компонент будет активирован автоматически.
RadarComponent->SetAutoActivate(true);
}
Blueprints
- Загрузите шаблон игры Unreal Engine (UE5) от третьего лица. Откройте блюпринт персонажа BP_ThirdPersonCharacter по пути /All/Game/ThirdPerson/Blueprints.
- Выделите компонент Character Movement и в настройках Details / Activation установите флаг Auto Activate в значение False.
Тем самым при запуске игры компонент движения будет отключен, и персонаж не сможет двигаться. Теперь активируем его в Construction Script при помощи рассматриваемой функции.
- В Construction Script перетащите ссылку на компонент Character Movement и из этой ссылки получите функцию Set Auto Activate.
- Подключите функцию к Construction Script и установите параметр New Auto Activate в значение True.
В результате при помощи функции SetAutoActivate при запуске игры компонент движения будет активирован, и персонаж сможет передвигаться, несмотря на то, что в свойствах компонента Character Movement активация отключена.

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