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

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

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

Set Active

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

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

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

  1. Если New Active == True: вызывается метод Activate, который активирует компонент, включая его Tick (если разрешён), устанавливая свойство компонента Is Active в значение True и вызывая диспетчер события On Component Activated (событие, доступно как в C++, так и в Blueprint и используется для запуска пользовательской логики после активации компонента).
  2. Если 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

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

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

 


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

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

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