C++ в Unreal Engine 5.sa_UnEn5

C++ в Unreal Engine 5.sa_UnEn5

Просмотрите все вопросы и варианты бесплатно. Правильные ответы скрыты и открываются только после получения доступа.

33 вопроса Вариант 1 Доступ 7 дней
Содержание теста

Вопросы и варианты

Без отметок и подсказок к правильным ответам

Вопрос 1

Unreal Engine в качестве основного языка программирования использует язык …

  1. C++
Вопрос 2

Основной С++ класс в Unreal Engine, от которого наследуются все остальные, это …

  1. UObject
Вопрос 3

C++ класс в Unreal Engine, который представляет собой управляемый игроком объект, это …

  1. APawn
Вопрос 4

C++ класс в Unreal Engine, который представляет игрока на уровне, это …

  1. APlayerController
Вопрос 5

Базовый C++ класс в Unreal Engine для всех компонентов это …

  1. UActorComponent
Вопрос 6

Макрос в Unreal Engine, обозначающий поле класса видимым для системы рефлексии, это …

  1. UPROPERTY
Вопрос 7

C++ класс в Unreal Engine, представляющий собой динамический массив, это …

  1. TArray
Вопрос 8

C++ класс в Unreal Engine, представляющий собой список формата ключ-значение, это …

  1. TMap
Вопрос 9

С++ класс в Unreal Engine, наследники которого могут быть расположены на игровой сцене, это …

  1. AActor
Вопрос 10

C++ класс в Unreal Engine, который является глобальным менеджером игры на уровне, это …

  1. AGameMode
Вопрос 11

Макрос в Unreal Engine, обозначающий функцию класса видимой для системы рефлексии, это …

  1. UFUNCTION
Вопрос 12

Макрос в Unreal Engine, обозначающий структуру видимой для системы рефлексии, это …

  1. USTRUCT
Вопрос 13

Что такое CDO?

  1. Class Default Object — это шаблон, на основе которого создаются все классы всех типов, наследуемые от UObject. CDO хранит стандартные параметры объектов класса.
  2. Class Design Object — это структура, используемая для проектирования классов и наследования.
  3. Custom Data Object — это объект, предназначенный для хранения пользовательских данных и параметров.
Вопрос 14

Почему нельзя вызвать Broadcast() метод события в нескольких разных классах?

  1. При декларировании события указывается владеющий им класс. Только этот класс может вызывать Broadcast() метод.
  2. Только методы, которые не имеют параметров, могут вызывать Broadcast() метод.
  3. Вызов Broadcast() метода требует наличия статического метода.
Вопрос 15

Что означает следующий макрос: DECLARE_DELEGATE(FMyDelegateSignature)?

  1. Этот макрос создаёт стандартный тип данных для передачи параметров в функции.
  2. Этот макрос декларирует кастомный архетип делегата без параметров и возвращаемого значения для использования исключительно в С++ коде. К делегату можно привязать только 1 метод/функцию.
  3. Этот макрос декларирует встроенную функцию, которая выполняется в режиме реального времени.
Вопрос 16

Что означает следующий макрос: DECLARE_DYNAMIC_DELEGATE_OneParam(FMyDelegateSignature, AActor*, ParamActor)?

  1. Этот макрос декларирует стандартный тип данных для передачи параметров в функции.
  2. Этот макрос декларирует кастомный архетип делегата без возвращаемого значения и с одним параметром типа AActor* c возможностью использовать его также в блюпринтах. К делегату можно привязать только 1 метод/функцию.
  3. Этот макрос создаёт встроенную функцию, которая выполняется в режиме реального времени.
Вопрос 17

Почему git конфликты в Blueprint классах не позволяют их решить c принятием изменений обеих версий?

  1. Blueprints — это бинарные файлы типа UAsset. Изменить их значения напрямую, не повредив файлы, без редактора UE невозможно.
  2. Git конфликты в Blueprint классах возникают из-за несовместимости версий движка.
  3. Изменить значения Blueprint классов можно только при помощи внешних редакторов.
Вопрос 18

Зачем нужен тип TSubclassOf˂AMyActor˃?

  1. TSubclassOf˂AMyActor˃ используется для задания уникальных параметров объектов в Blueprint.
  2. TSubclassOf˂AMyActor˃ нужен для автоматической генерации акторов в процессе выполнения игры.
  3. TSubclassOf˂AMyActor˃ позволяет ограничить присвоение в С++ и Blueprints объектов типа UClass заданным классом и его наследниками.
Вопрос 19

Чем отличается ACharacter от APawn?

  1. ACharacter включает встроенные функции для управления анимацией, тогда как APawn не имеет таких возможностей.
  2. ACharacter — это специализированный наследник APawn для мультиплеерных шутеров с компонентом капсулы и меша.
  3. ACharacter создаёт объекты автоматически, в отличие от APawn.
Вопрос 20

В чем заключается отличие TSharedPtr от TShraredRef?

  1. TSharedPtr — это тип, объект которого может указывать на nullptr, TShraredRef всегда обязан указывать на существующий объект.
  2. TSharedPtr используется для управления памятью, в то время как TShraredRef отвечает за синхронизацию потоков.
  3. TSharedPtr хранит информацию о состоянии объекта, а TShraredRef управляет его жизненным циклом.
Вопрос 21

Может ли быть несколько объектов класса UGameInstance одновременно?

  1. Да, возможно создать несколько объектов UGameInstance для управления различными аспектами игры.
  2. Нет. UGameInstance автоматически уничтожается при каждом завершении уровня и создается заново при запуске нового.
  3. Нет. UGameInstance создается при запуске процесса игры и существует пока процесс не будет уничтожен.
Вопрос 22

Что означает следующий макрос: DECLARE_MULTICAST_DELEGATE_l(FMyDelegateSignature)?

  1. Этот макрос создаёт универсальный делегат с параметрами, который можно использовать для различных целей в Blueprints.
  2. Этот макрос декларирует кастомный архетип делегата без параметров и возвращаемого значения для использования исключительно в С++ коде. К делегату можно привязать несколько методов/функций.
  3. Этот макрос инициирует асинхронные операции, позволяя выполнять несколько задач одновременно в C++ коде.
Вопрос 23

В каком случае DECLARE_EVENT лучше заменить на DECLARE_DYNAMIC_MULTICAST_DELEGATE?

  1. Когда необходимо работать с объектом в Blueprints.
  2. Когда нужно увеличить производительность обработки данных в C++.
  3. Когда необходимо заменить статические функции на динамические методы.
Вопрос 24

Почему для одного объекта UINTERFACE создается 2 класса?

  1. Один класс создается для выполнения асинхронных операций, а второй для синхронных вызовов внутри системы.
  2. Первый класс, имеющий приставку “U”, необходим для системы рефлексии и создания UClass типа. Второй, имеющий приставку “I” нужен для непосредственной работы с интерфейсом.
  3. Первый класс используется для управления потоками данных, а второй для управления сетевыми подключениями.
Вопрос 25

Сопоставьте типы билдов в Unreal Engine с их назначением:

  1. Shipping
  2. Debug
  3. Development
  4. Выпуск
  5. Отладка
  6. Тестирование
Вопрос 26

Сопоставьте объекты со способом управления их памятью:

  1. AActor* MyActor
  2. TSharedPtr˂FMyClass˃ MyClass
  3. FMyStruct* MyStruct
  4. Garbage Collector
  5. Reference count
  6. Manual
Вопрос 27

Сопоставьте макросы и подходящие им ключевые слова:

  1. UPROPERTY
  2. UFUNCTION
  3. UCLASS
  4. EditDefaultOnly
  5. BlueprintCallable
  6. Blueprintable
Вопрос 28

Расположите в правильном порядке методы, вызываемые при старте игры:

  1. UWorld::BeginPlay()
  2. AGameModeBase::StartPlay()
  3. AGameStateBase::HandleBeginPlay()
  4. AActor::BeginPlay()
Вопрос 29

Расположите в правильном порядке цепочку наследования UStaticMeshComponent:

  1. UActorComponent
  2. USceneComponent
  3. UPrimitiveComponent
  4. UMeshComponent
  5. UStaticMeshComponent
Вопрос 30

Расположите значения Verbosity при логировании от самого критичного до наименее критичного:

  1. Fatal
  2. Error
  3. Warning
  4. Display
Вопрос 31

Как правильно описывается универсальная реализация механики здоровья?

  1. Необходимо создать класс, который наследует UActorComponent и разместить там переменную типа float. Для регистрации получения урона следует привязать делегат AActor родителя OnTakeAnyDamage к методу, который будет изменять внутреннее значения созданной переменной. Такой компонент можно добавить к любому нужному актору.
  2. Реализация механики здоровья требует использования компонента AIController и создания класса, наследующего от UHealthComponent, с переменной типа int для здоровья. Компонент добавляется к любому актору и регистрирует изменения через методы UpdateHealth и OnDamageReceived.
  3. Для универсальной реализации механики здоровья нужно создать класс, наследующий от UActorComponent, и добавить переменную типа float для здоровья. Делегат OnHealthChanged родителя AActor привязывается к методу, который обновляет значение переменной.
Вопрос 32

Как корректно описать этапы подключения Enhanced Input Subsystem в проект с нуля?

  1. Начинаем с создания UInputAction в редакторе и назначения возвращаемого значения как FVector. Далее создаем FInputActionValue для хранения действий и связываем их с клавишами WASD через FInputAxis. Устанавливаем модификаторы на инверсию осей и добавляем их в свойство Character класса. Привязываем действия к методам через FInputBinding и добавляем их в InputSubsystem.
  2. Сначала создаем FInputKeyBinding и связываем его с действиями перемещения и камеры. Затем воссоздаем UInputMappingContext и назначаем клавиши QWERTY с дополнительными модификаторами инверсии. Добавляем их в свойства Character через UPROPERTY, затем через методы компонента добавляем в Enhanced Input Subsystem.
  3. Первым делом создаем UInputAction в редакторе, для передвижения и камеры устанавливаем возвращаемое двумерное векторное значение. Затем создаем UInputMappingContext, назначаем экшенам кнопки клавиатуры. Для клавиш WASD добавляем модифаеры на инверсию и Swizzle Axis в порядке YXZ (UInputModifier). Затем создаем UPROPERTY в Character классе для экшенов и маппинг контекста. Наконец, привязываем экшены к методам класса, а маппинг контекст добавляем в Enhanced Input Subsystem.
Вопрос 33

Какие типы файлов есть в директории проекта и как лучше с ними взаимодействовать в рамках git?

  1. Файлы проекта делятся на те, которые должны отслеживаться в git, и те, которые нет. К файлам для отслеживания относятся: исходные файлы с++, файлы конфигурации .ini из папки Config, uasset файлы и блюпринты, а также файл проекта .uproject. Локальные файлы включают папки, такие как Backup, Logs, Binaries, и Intermediate, которые не должны быть в git и должны добавляться в .gitignore.
  2. Файлы в директории проекта можно сразу разделить на локальные файлы и проектные файлы. Проектные файлы это все С++ файлы папки Source, файлы типа .ini папки Config. Так же к ним относятся контентные uasset файлы - ассеты и блюпринты. Дополнительно отнесем файл проект .uproject. Все эти файлы должны быть добавлены в git и отслеживаться. Остальные файлы являются локальными, это папки Saved, Intermediate, DerivedDataCache, Bin, Build, а также файлы, генерируемые Visual Studio. Они должны быть добавлены в .gitignore.
  3. Локальные и проектные файлы можно различить по их функциям. Проектные файлы: исходники c++, конфигурационные файлы .ini из папки Config, контентные файлы uasset и блюпринты, и файл .uproject. Эти файлы отслеживаются в git. Локальные файлы, такие как папки Temp, Saved, Intermediate, и Build, а также файлы Visual Studio, должны быть добавлены в .gitignore и не отслеживаться в git.