Функция Activate в Unreal Engine UE5, UE4

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

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

Activate

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

Blueprint-функция Activate в Unreal Engine — это метод класса Actor Component, отвечающий за включение (активацию) компонента в логике игры. Функция вызывается как из C++, так и из Blueprints, и позволяет запускать поведение компонента, если оно было приостановлено или ещё не началось, то есть переводит его в состояние, в котором компонент может выполнять свою функцию. В момент активации производится включение тиков (если они разрешены в компоненте) и запускается диспетчер событий, уведомляющий подписчиков об активации компонента.

Перевод официальной справки: функция Activate — активирует компонент сцены (Scene Component). Должна быть переопределена в наследуемых нативных классах.

Метод Activate используется для ручного включения компонента, поддерживающего активацию, что может быть полезно, например:

  • при активации триггеров;
  • при динамическом включении/отключении функциональности Актора;
  • для повторной активации компонента после его деактивации через функцию Deactivate.

Параметры функции

  • Target (Actor Component) — ссылка на компонент, который необходимо активировать.
  • Reset (bool = False) — если установлено значение True, компонент будет активирован, даже если внутренний метод движка ShouldActivate() вернёт False. Параметр определяет, должен ли компонент быть активирован независимо от текущего состояния и условий.

Reset = False (по умолчанию): компонент будет активирован, только если он ещё не активен (функция Is Active возвращает False). Это стандартный способ включения компонента, чтобы избежать повторной активации.

Reset = True: компонент будет активирован безусловно, даже если он уже был активным.

Как Activate работает внутри

Рассмотрим, как функция Activate работает внутри 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
void UActorComponent::Activate(bool bReset)
{
    // Проверяем, нужно ли активировать компонент.
    // Если bReset == true, то активация происходит безусловно (например, принудительный сброс).
    // Если bReset == false, вызывается ShouldActivate(), чтобы проверить, можно ли активировать.
    if (bReset || ShouldActivate() == true)
    {
        // Включаем тик компонента, если он поддерживает тики (PrimaryComponentTick.bCanEverTick == true).
        // Это позволяет компоненту обновляться каждый кадр через функцию TickComponent().
        SetComponentTickEnabled(true);

        // Устанавливаем внутренний флаг активности напрямую (без дополнительных проверок).
        // Не вызывает повторную логику или репликацию по сети.
        // Фактически устанавливает: bIsActive = true;
        SetActiveFlag(true);

        // Генерируем событие "OnComponentActivated", которое доступно как в C++, так и в Blueprints.
        // Это позволяет подписаться на момент активации компонента и выполнить соответствующие действия.
        // Параметр bReset передается в событие, чтобы различать обычную и принудительную активацию.
        OnComponentActivated.Broadcast(this, bReset);
    }

    // Если условие не выполнено (компонент не должен быть активирован), ничего не делаем.
}

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

  1. Проверка необходимости активации компонента — вызывается виртуальный метод движка ShouldActivate(), который проверяет, можно ли активировать компонент в текущем состоянии. Если параметр функции Reset == False и ShouldActivate() == False, активация компонента прерывается.

* ShouldActivate() — виртуальная функция, которая по умолчанию проверяет, не активен ли уже компонент. Может быть переопределена в дочерних классах для более сложных условий.

  1. Включение Tick — производится активация выполнения функции TickComponent() каждый кадр (выполняется только если у компонента включён тик).
  2. Установка внутреннего флага активности — у компонента свойство Is Active устанавливается в значение True.
  3. Вызов Event Dispatcher — производится запуск диспетчера событий On Component Activated. Событие, доступно как в C++, так и в Blueprint. Может использоваться для запуска пользовательской логики после активации компонента.

Смежные функции

  • Deactivate — деактивирует компонент, останавливая его работу и отключая все связанные действия.
  • Set Active — устанавливает новое состояние активности компонента.
  • Set Auto Activate — определяет, будет ли компонент автоматически активирован при начале игры.
  • Toggle Active — переключает текущее состояние активности компонента
  • Is Active — возвращает текущее состояние активности компонента.

Пример использования функции Activate

C++


1
2
3
4
5
6
7
void AMyActor::StartRadar() // Пользовательская функция активации пользовательского компонента радара
{
    if (IsValid(RadarComponent)) // Проверяем, существует ли компонент радара
    {
        RadarComponent->Activate(true); // Активируем радар всегда, даже если ранее он был уже активирован
    }
}

Blueprints

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

В результате при запуске игры персонаж не сможет двигаться, но при нажатии на клавишу F при помощи функции Activate компонент Character Movement активируется и персонаж сможет начать движение.

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

 

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


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

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

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