АнонсБлок 1 - Ментальный сдвигКурс: Тестируется

Никогда не пиши gameplay код в конструкторе UE

Actor lifecycle, BeginPlay, CreateDefaultSubobject, NewObject и editor-time ловушки.

Главная боль

Почему в Editor все ломается?

Главная мысль

Constructor создает объект. BeginPlay запускает игру.

Главная боль

Почему в Editor все ломается?

Зачем это существует?

Unreal создает объекты не только во время игры. Конструктор может выполняться в editor-time, при загрузке asset'ов и при создании Class Default Object.

Темы

  • Actor lifecycle
  • Constructor
  • PostInitializeComponents
  • BeginPlay
  • CreateDefaultSubobject
  • NewObject
  • Editor-time execution
  • Ownership intro

Greybox Arena

  • Character
  • HealthComponent
  • Intentional constructor fail
  • Correct runtime initialization

Где люди обычно ломаются?

  • Пишут runtime gameplay logic в constructor
  • Создают runtime-объекты через неправильный API
  • Не различают default subobjects и объекты, созданные во время игры
  • Удивляются, что код сработал еще до Play

Как это выглядит в production?

Constructor отвечает за дефолтную структуру объекта. Runtime-логика живет в BeginPlay, PostInitializeComponents или явно вызванных initialization-функциях.

Главная мысль

Constructor создает объект. BeginPlay запускает игру.

Бейдж Unreal Authorized Instructor используется по лицензии Epic Games. Absolute Academy — независимый авторский проект. Авторизация инструктора не означает, что Epic Games одобряет или спонсирует Академию и её учебные материалы, либо что Академия аффилирована с Epic Games.

Мой учебный код можно свободно использовать в своих проектах. Упоминание автора — по желанию. Условия и лицензия 0BSD