Функция Set Auto Activate в Unreal Engine

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

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

Set Auto Activate

Blueprint-функция Set Auto Activate в Unreal Engine (UE5, UE4)
Blueprint-функция Set Auto Activate в Unreal Engine (UE5, UE4)

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());
    }
}

Логика работы функции:

  1. Проверка безопасности изменения параметра. Параметр автоматической активации может быть изменён только до регистрации компонента в мире или во время работы конструктора скрипта Актора-владельца (Construction Script).
if (!bRegistered || IsOwnerRunningUserConstructionScript())

* bRegisteredфлаг, указывающий, зарегистрирован ли компонент в мире.
* IsOwnerRunningUserConstructionScript() — проверяет, выполняется ли пользовательский конструктор владельца (Construction Script).

Если одно из условий истинно, а именно регистрация компонента в мире ещё не производилась или Актор-владелец находится в стадии выполнения конструктора скрипта, то изменения свойства авто активации разрешены. Это ограничение существует потому, что: автоматическая активация (bAutoActivate) учитывается только один раз, когда Актор создаётся в мире. После регистрации компонента изменять это значение уже не имеет смысла.

  1. Установка нового значения. Сохраняем новое значение в свойство компонента bAutoActivate. Это свойство влияет на то, будет ли компонент автоматически активирован при старте игры.
bAutoActivate = bNewAutoActivate;
  1. Предупреждение при некорректном вызове. Выводится, если попытаться изменить 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

  1. Загрузите шаблон игры Unreal Engine (UE5) от третьего лица. Откройте блюпринт персонажа BP_ThirdPersonCharacter по пути /All/Game/ThirdPerson/Blueprints.
  2. Выделите компонент Character Movement и в настройках Details / Activation установите флаг Auto Activate в значение False.

Тем самым при запуске игры компонент движения будет отключен, и персонаж не сможет двигаться. Теперь активируем его в Construction Script при помощи рассматриваемой функции.

  1. В Construction Script перетащите ссылку на компонент Character Movement и из этой ссылки получите функцию Set Auto Activate.
  2. Подключите функцию к Construction Script и установите параметр New Auto Activate в значение True.

В результате при помощи функции SetAutoActivate при запуске игры компонент движения будет активирован, и персонаж сможет передвигаться, несмотря на то, что в свойствах компонента Character Movement активация отключена.

Пример работы функции SetAutoActivate в Blueprint
Пример работы функции SetAutoActivate в Blueprint

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


наш Телеграм канал

Оцените статью
( 1 оценка, среднее 5 из 5 )
Поделитесь этой статьей со своими знакомыми в социальных сетях, возможно, эта статья кому-то будет полезна
Unreal Engine - это просто
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.