UUserWidget의 Event Pre Construct와 Event Construct 차이점

언리얼 엔진의 UMG(UserWidget)에서 Event Pre ConstructEvent Construct의 차이를 이해하는 것은 위젯을 올바르게 초기화하고 원하는 동작을 구현하는 데 매우 중요합니다.


Event Pre Construct

  • 목적: 위젯의 초기 설정을 담당하며, 주로 에디터에서의 미리보기 및 외형 설정에 사용됩니다.
  • 실행 시점: 에디터(디자인 타임)와 런타임(게임 실행 시) 모두에서 호출됩니다.
  • 주요 용도: 디폴트 값 세팅, 텍스트/이미지 등 UI의 미리보기 설정. 게임을 실행하지 않아도 에디터에서 위젯이 어떻게 보일지 확인할 때 유용합니다.
  • 제한 사항: 게임 플레이와 관련된 데이터(예: 게임 상태, 플레이어 정보 등)는 접근하지 않는 것이 안전합니다. 에디터에서는 이러한 데이터가 존재하지 않을 수 있어 에디터가 크래시될 수 있습니다.
  • 실행 순서: Slate 위젯(언리얼의 내부 UI 시스템)이 생성되기 전에 실행됩니다.
  • 특이 사항: 함수 내에서 IsDesignTime(디자인 타임 여부) 플래그를 통해 에디터와 런타임을 구분할 수 있습니다.

Event Construct

  • 목적: 위젯과 그 내부 Slate 컴포넌트가 모두 생성된 후, 런타임에서의 초기화 로직을 담당합니다.
  • 실행 시점: 오직 런타임(게임 실행 시)에만 호출됩니다. 에디터 미리보기에서는 실행되지 않습니다.
  • 주요 용도: 바인딩 설정, 게임 상태에 따라 변수 초기화, 위젯이 완전히 생성된 이후 필요한 로직 처리 등.
  • 실행 순서: Pre Construct 이후, Slate 위젯이 모두 생성된 후 실행됩니다.

비교 표

항목Event Pre ConstructEvent Construct
에디터에서 호출아니오
런타임에서 호출
실행 순서Slate 위젯 생성 이전Slate 위젯 생성 이후
주요 용도외형/미리보기 세팅, 디자인 타임 로직런타임 초기화, 게임 연동 로직
게임 데이터 접근불가(비추천, 에디터 크래시 위험)가능(위젯 완전 생성 후 안전)
IsDesignTime 사용아니오

실전 팁

  • Pre Construct에서는 외형이나 에디터 미리보기에 필요한 값만 설정하세요. 게임 데이터나 논리적 연산은 피하세요.
  • Construct에서는 실제 게임과 연동되는 데이터, 바인딩, 변수 초기화 등 런타임에서 필요한 로직을 처리하세요.
  • Pre Construct에서 에디터와 런타임을 구분해야 할 때는 IsDesignTime 변수를 활용하세요.

요약

  • Event Pre Construct: 에디터와 런타임 모두 호출, 외형/미리보기용 설정, 게임 데이터 접근 금지
  • Event Construct: 런타임에서만 호출, 실제 게임 로직/초기화 처리, 게임 데이터 접근 가능

이 두 이벤트를 올바르게 사용하면 위젯이 에디터와 게임 모두에서 안정적으로 동작하며, 예기치 않은 에디터 크래시나 데이터 미초기화 문제를 방지할 수 있습니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Back to top