Видео 3Блок 1 - Ментальный сдвиг

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

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

Главная боль

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

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

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

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

Главная боль

Почему в 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 запускает игру.