Справочник по Unreal Engine


Назначение

Горячие клавиши, макросы, консольные команды и форматы Unreal Engine для ежедневной работы. Учебный курс: Unreal Engine, раздел Разработка игр.


Содержание


Блок 1. Lifecycle, Actor, Component, Reflection

Actor lifecycle (основные события)

Метод / событие Когда Примечания
Constructor (C++) Создание объекта (CDO и экземпляры) Только настройка defaults; не вызывайте GetWorld()
PostInitializeComponents После инициализации компонентов Редко переопределяют
BeginPlay Старт игры для актора Аналог Start в Unity; мир уже доступен
Tick(float DeltaTime) Каждый кадр Отключите в конструкторе: PrimaryActorTick.bCanEverTick = false
EndPlay(EEndPlayReason::Type) Уничтожение, смена уровня, выход Очистка подписок, таймеров
OnConstruction В редакторе при изменении актора Не вызывается в packaged build по умолчанию

Component: BeginPlay / Tick / EndPlay у UActorComponent — если компонент включён и актор в игре.


Иерархия

Тип Роль
UObject База: GC, serialization, reflection
AActor Объект в UWorld
APawn Управляемое тело
ACharacter Pawn + UCharacterMovementComponent + capsule
APlayerController Ввод, камера, HUD
AGameModeBase Правила (сервер)
UActorComponent Логика без transform
USceneComponent Transform в иерархии компонентов

Макросы reflection (C++)

Макрос Назначение
UCLASS(Blueprintable) Класс наследуется в Blueprint
UCLASS(BlueprintType) Можно использовать как тип переменной в BP
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="…") Поле в Details и Blueprint
UPROPERTY(Replicated) Сетевая репликация (нужен GetLifetimeReplicatedProps)
UFUNCTION(BlueprintCallable) Вызов из Blueprint
UFUNCTION(BlueprintImplementableEvent) Реализация только в BP
UFUNCTION(Server, Reliable) RPC на сервер
UFUNCTION(Client, Reliable) RPC на владельца клиента
UFUNCTION(NetMulticast, Reliable) RPC всем клиентам
GENERATED_BODY() Обязателен в теле UCLASS

UHT / UBT: после изменения .h с U* макросами — пересборка. Файл *.generated.h подключается последним в заголовке.


Blueprint и C++

Blueprint C++
Выполнение Blueprint VM (байткод) Нативный код
Скорость Медленнее на hot path Максимальная
Итерация Быстрая в редакторе Дольше (компиляция)
Доступ к движку Через BlueprintCallable API Полный

Блок 2. Коллизии, физика, trace

Ответы коллизии

Ответ Поведение
Ignore Нет взаимодействия
Overlap Событие пересечения, без физической блокировки
Block Столкновение, физика останавливает объект

Object Types и Channels

  • Object Type — "кто я" (WorldStatic, Pawn, Vehicle…).
  • Trace Channel — для line/sphere trace (Visibility, Camera, custom).
  • Object Channel — для object queries между типами.

Настройка: Project Settings → Collision или per-component Collision Presets.


Line trace

FHitResult Hit;
FCollisionQueryParams Params;
Params.AddIgnoredActor(this);

bool bHit = GetWorld()->LineTraceSingleByChannel(
    Hit,
    Start,
    End,
    ECC_Visibility,
    Params
);

Chaos (UE5)

Физика по умолчанию — Chaos (не PhysX). UPrimitiveComponent + Simulate Physics или forces через AddImpulse / AddForce.


Блок 3. Сеть — репликация и RPC

Понятие Описание
Authority Сервер — источник правды для gameplay
Replication Автосинхронизация UPROPERTY(Replicated)
RPC Разовый вызов функции на другой machine
Relevancy Клиент получает обновления только "важных" акторов
void AMyActor::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
    Super::GetLifetimeReplicatedProps(OutLifetimeProps);
    DOREPLIFETIME(AMyActor, MyReplicatedInt);
    DOREPLIFETIME_CONDITION(AMyActor, MyConditionalFloat, COND_OwnerOnly);
}

Правило: меняйте replicated-переменные на сервере. RPC Server — клиент просит сервер; Client — сервер шлёт одному клиенту.


Блок 4. Редактор, консоль, профилирование

Горячие клавиши (Viewport)

Клавиша Действие
W / E / R Move / Rotate / Scale
F Focus на выбранном
G Game View (без gizmo редактора)
Alt + P Play in Editor
Esc Stop PIE

Консоль (~)

Команда Назначение
stat unit Frame time: game, GPU, draw
stat gpu Разбивка GPU
stat scenerendering Стоимость рендера сцены
show collision Визуализация коллизий
r.ScreenPercentage 100 Масштаб рендера (TSR/DLSS влияют отдельно)
profilegpu GPU capture (Ctrl+Shift+,)

Shader / PSO stutter

  • Project Settings → Rendering → Shader Pipeline Cache — precaching PSO.
  • Прогон уровней с PSO Precaching / сохранение Pipeline Cache перед релизом.

Блок 5. Проект, сборка, ассеты

Файлы

Путь Содержимое
*.uproject JSON: имя, модули, plugins
Config/Default*.ini Настройки по умолчанию
Content/ .uasset, .umap (бинарные ассеты)
Source/ModuleName/ C++ модуль (ModuleName.Build.cs, *.cpp, *.h)
Plugins/ Локальные плагины

Типы ассетов (частые)

Ассет Назначение
Static Mesh Статическая геометрия
Skeletal Mesh Скелетная модель
Material / Material Instance Шейдер и параметры
Blueprint Визуальный класс или логика
Level / World Карта (.umap)
Data Table Табличные данные (CSV-подобные)

Сборка

  1. Compile — C++ в редакторе.
  2. File → Package Project — финальная сборка под платформу.
  3. Для shipping — Staging, Shader Library, Pak файлы.

Enhanced Input (UE5)

Тип Роль
UInputAction Действие (Jump, Move)
UInputMappingContext Привязки клавиш/геймпада
UEnhancedInputComponent Подписка в SetupPlayerInputComponent

Legacy BindAction / BindAxis — устаревающий путь; новые шаблоны используют Enhanced Input.