Функция Set Component Tick Enabled в Unreal Engine

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

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

Set Component Tick Enabled

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

Blueprint-функция Set Component Tick Enabled в Unreal Engine — метод класса Actor Component, который включает или выключает выполнение тиков компонента (TickComponent()), если они разрешены для него. Тем самым позволяет включать/выключать обновление логики компонента динамически.

Функция вызывается как из C++, так и из Blueprints.

Перевод официальной справки: функция Set Component Tick Enabled — включает или отключает для компонента функцию тиков.

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

  • Target (Actor Component) — ссылка на компонент, для которого необходимо включить/выключить выполнение тиков.
  • Enabled (bool) — указывает, нужно ли включить или выключить тик: True — тики включены, False — тики отключены.

Как Set Component Tick Enabled работает внутри

Рассмотрим, как функция SetComponentTickEnabled работает внутри движка Unreal Engine.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
void UActorComponent::SetComponentTickEnabled(bool bEnabled)
{
    // Проверяем, разрешено ли компоненту вообще тикать.
    if (PrimaryComponentTick.bCanEverTick && !IsTemplate())
    {
        // Вызываем SetTickFunctionEnable
        // Данный метод устанавливает состояние тика компонента в структуре PrimaryComponentTick.
        // Это влияет на то, будет ли вызываться TickComponent() каждый кадр для текущего компонента.
        PrimaryComponentTick.SetTickFunctionEnable(bEnabled);
    }

    // Если компонент не может тикать (bCanEverTick == false) или это шаблонный объект,
    // то ничего не происходит — тик не включается/не выключается.
}
  1. Проверка возможности тика

Для начала, прежче чем включать/отключать тики, в строке 4 проверяется разрешено ли вообще тикать компоненту:

  • PrimaryComponentTick.bCanEverTick — флаг, определяющий, может ли компонент вообще участвовать в тиках. Соответственно, он должен возвращать значение True;
  • !IsTemplate() — проверяет, что компонент не является шаблонным.

Только если оба условия истинны — можно безопасно менять состояние тика.

  1. Включение/отключение тиков

Если проверка пройдена, то можно включать/отключать тики. Производится это внутренним методом SetTickFunctionEnable структуры PrimaryComponentTick, внутрь которого подаётся значение bEnabled (True или False), которое мы определяем в параметре Enabled рассматриваемой функции SetComponentTickEnabled.

* PrimaryComponentTick — это специальная структура в Unreal Engine, которая используется для управления тиками компонента и содержит внутри себя следующую информацию:

  • может ли компонент вообще тикать;
  • когда он будет тикать (в какой группе тиков);
  • как часто (интервал между тиками);
  • есть ли зависимости по тику (должен ли он тикать после другого Актора или компонента).

Соответственно, рассматриваемая в этой статье Blueprint-функция Set Component Tick Enabled для начала проверяет разрешён ли тик для текущего компонента и если разрешён, то включает/выключает его, меняя внутренний флаг активности тика в структуре PrimaryComponentTick.

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

  • Event Tick — вызывается каждый кадр, если компонент имеет включённый тик. Используется для логики обновления.
  • Event Async Physics Tick — вызывается при асинхронном физическом тике (если включено).
  • Is Component Tick Enabled — проверяет, включён ли тик компонента.
  • Set Component Tick Interval — задаёт интервал между тиками компонента (в секундах).
  • Set Component Tick Interval And Cooldown — задаёт интервал между тиками компонента (в секундах), а также устанавливает Cooldown для корректной синхронизации.
  • Get Component Tick Interval — возвращает текущий интервал между тиками компонента.
  • Set Tick Group — устанавливает группу тиков, определяя порядок выполнения.
  • Set Tickable When Paused — определяет, должен ли компонент тикать даже когда игра на паузе.

Пример использования функции Set Component Tick Enabled

C++

Включение/отключение тиков компонента движения при нажатии на клавишу F.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
void AMyCharacter::OnFKeyPressed()
{
    if (MovementComponent) // Убеждаемся, что компонент существует
    {
        if (MovementComponent->IsComponentTickEnabled()) // Проверяем тик компонента (включён или выключен)
        {
            MovementComponent->SetComponentTickEnabled(false); // Если тик включён, выключаем его
        }
        else
        {
            MovementComponent->SetComponentTickEnabled(true); // Если тик выключен, включаем его
        }
    }
}

Blueprints

Рассмотрим небольшой пример включения/отключения тиков компонента передвижения персонажа.

При нажатии на клавишу F (событие Key F) при помощи функции Is Component Tick Enabled проверяем тики компонента движения персонажа Character Movement:

  • если тики включены (функция возвращает True), то рассматриваемой функцией SetComponentTickEnabled выключаем их, установив параметр Enabled в значение False;
  • если тики выключены (функция возвращает False), то рассматриваемой функцией SetComponentTickEnabled включаем их, установив параметр Enabled в значение True.

В результате при движении персонажа при нажатии на клавишу F его движение будет то останавливаться, то вновь возобновляться, так как тики компонента движения Character Movement будут соответствующим образом включаться и выключаться (а работа этого компонента напрямую завязана на них).

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

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

 


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

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

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