본문 바로가기
언리얼

[UE5] BeginPlay 실행순서

by 안선생 2025. 10. 27.

언리얼 BeginPlay 호출 시점 — GameMode vs 레벨 액터, 누가 먼저일까?

언리얼을 다루다 보면, BeginPlay()가 언제 호출되는가에 대한 궁금증이 생깁니다.
특히 GameMode가 먼저 실행될까, 아니면 레벨에 배치된 Actor들이 먼저 실행될까?
처음엔 “월드의 BeginPlay부터 시작하니까, 레벨에 배치된 액터들이 먼저겠지?” 하고 생각했는데,
막상 테스트해보면 그렇지 않습니다.

직접 실행해본 결과,
놀랍게도 빌드된 버전과 **에디터(PIE)**에서 호출 순서가 다릅니다.

 

빌드된(패키지된) 버전의 BeginPlay 순서

  1. Pawn
  2. GameMode
  3. GameState
  4. PlayerState
  5. PlayerController
  6. HUD
  7. Level
  8. 레벨에 배치된 Actor

 

 

에디터(PIE, Play In Editor)에서의 BeginPlay 순서

  1. 레벨에 배치된 Actor
  2. GameMode
  3. Level
  4. GameState
  5. PlayerController
  6. PlayerState
  7. HUD
  8. Pawn

 

왜 이런 차이가 생길까?

이 차이는 게임 실행 시점의 초기화 흐름이 서로 다르기 때문입니다.
Epic 공식 문서(Game Flow Overview)에서도 이 과정을 확인할 수 있습니다.

 

빌드된 버전 (Standalone / Packaged)

게임이 실행되면,

  1. GameInstance가 생성됩니다.
  2. GameMode, GameState, PlayerController, Pawn 등 게임 로직 관련 객체들이 먼저 생성됩니다.
  3. 그 후 레벨이 로드되고, 레벨 내 액터들의 BeginPlay()가 순차적으로 호출됩니다.

즉, 빌드 버전에서는 **게임 로직 중심 객체(GameMode 계열)**이 먼저 준비된 상태에서 게임이 공식적으로 시작됩니다.

 

 에디터(PIE)

에디터에서 “Play” 버튼을 누르면, 이미 레벨 에디터에 로드되어 있는 액터들이 먼저 존재합니다.
PIE 세션이 시작되면서 이 액터들이 먼저 BeginPlay()를 호출하고,
그 이후에 GameMode, GameState, PlayerController 등이 생성되어 초기화됩니다.

즉, 에디터에서는 레벨 액터가 먼저 실행되고 게임 로직 객체가 나중에 생성되는 구조입니다.

 

 

실행 에디타 환경이랑 빌드 된 버전이랑 다르게 동작할 수 있으니 조심하자

'언리얼' 카테고리의 다른 글

[UE5] Core Redirect  (0) 2025.04.09
[UE5] Subsystem  (0) 2025.04.08
[UE5] TSubclassOf  (0) 2025.04.06
[UE5] 머티리얼 동적으로 바꾸는 법 SetCustomPrimitiveDataFloat  (0) 2025.02.12
[UE5] Common UI 마우스 인풋 안먹을 때  (0) 2025.02.09