Справочник по Unreal Engine
Назначение
Горячие клавиши, макросы, консольные команды и форматы Unreal Engine для ежедневной работы. Учебный курс: Unreal Engine, раздел Разработка игр.
Содержание
- Блок 1. Lifecycle, Actor, Component, Reflection
- Блок 2. Коллизии, физика, trace
- Блок 3. Сеть: репликация и RPC
- Блок 4. Редактор, консоль, профилирование
- Блок 5. Проект, сборка, ассеты
Блок 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-подобные) |
Сборка
- Compile — C++ в редакторе.
- File → Package Project — финальная сборка под платформу.
- Для shipping — Staging, Shader Library, Pak файлы.
Enhanced Input (UE5)
| Тип | Роль |
|---|---|
UInputAction |
Действие (Jump, Move) |
UInputMappingContext |
Привязки клавиш/геймпада |
UEnhancedInputComponent |
Подписка в SetupPlayerInputComponent |
Legacy BindAction / BindAxis — устаревающий путь; новые шаблоны используют Enhanced Input.