Make Unreal REAL.
article thumbnail

 

액터 말고도 플레이어 컨트롤러의 OnPossess(), 게임 모드의 PostLogin() 등의 호출 순서도 이해하기 위해 많이 쓰이는 생명 주기 함수들을 구현해 직접 실험해봤다.

 

 

결과

메모리에 월드 로드
오디오 장치 초기화

GameMode::OnConstruction()

플레이를 위해 월드 가져오기

GameMode::PreInitializeComponents() 호출

    GameState::OnConstruction()
    GameState::PreInitializeComponents()
    GameState::PostInitializeComponents()

GameMode::PreInitializeComponents() 종료

GameMode::PostInitializeComponents()

월드 가져오기 완료
온라인 서브시스템 생성

GameMode::Login() 호출

    PlayerController::OnConstruction()
    PlayerController::PreInitializeComponents()
    PlayerController::PostInitializeComponents() 호출

        PlayerState::OnConstruction()
        PlayerState::PreInitializeComponents()
        PlayerState::PostInitializeComponents()

    PlayerController::PostInitializeComponents() 종료

GameMode::Login() 종료

GameMode::PostLogin() 호출

    Character::OnConstruction()
    Character::PreInitializeComponents()
    Character::PostInitializeComponents()
    PlayerController::OnPossess() 호출

        Character::PossessedBy()

    PlayerController::OnPossess() 종료

GameMode::PostLogin() 종료

GameMode::BeginPlay()
GameState::BeginPlay()
PlayerController::BeginPlay()
PlayerState::BeginPlay()
Character::BeginPlay()

플레이 종료

PlayerController::OnUnPossess() 호출

    Character::UnPossessed()

PlayerController::OnUnPossess() 종료

GameMode::Logout()

PlayerState::EndPlay()
PlayerController::EndPlay()

월드 해체 시작

GameMode::EndPlay()
GameState::EndPlay()
Character::EndPlay()

월드 해체 완료
온라인 서브시스템 종료

Character::BeginDestroy()
PlayerState::BeginDestroy()
PlayerController::BeginDestroy()
GameState::BeginDestroy()
GameMode::BeginDestroy()

오디오 장치 중지

Character::FinishDestroy()
PlayerState::FinishDestroy()
PlayerController::FinishDestroy()
GameState::FinishDestroy()
GameMode::FinishDestroy()

온라인 서브시스템 파괴

 

월드를 메모리에 로드한 후 오디오 장치를 초기화한다.

 

GameMode를 생성하고 플레이를 위한 월드를 가져온다.

 

Game State는 Game Mode의 PreInitializeComponents() 함수에서 생성된다.

 

Game Mode가 준비되면 월드 가져오기가 완료되고, 온라인 서브시스템을 생성한다.

 

Player Controller는 Game Mode의 Login() 함수에서 초기화된다.

  • Player State는 Player Controller의 PostInitializeComponents() 함수에서 생성된다.

 

Login() 함수가 종료된 직후 PostLogin() 함수가 호출된다.

  1. 폰을 생성한다.
  2. 플레이어 컨트롤러가 폰에 빙의한다.
    APlayerController::OnPossess()
  3. 폰이 플레이어 컨트롤러에 빙의된다.
    APawn::PossessedBy()

 

이제 각 액터의 BeginPlay() 함수가 호출된다.

 

플레이가 종료되면 플레이어 컨트롤러가 빙의를 해제한다.

  1. APlayerController::OnUnPossess()
  2. APawn::UnPossessed()

 

Game Mode의 Logout() 함수가 호출된다.

 

월드를 해체하면서 각 액터의 EndPlay() 함수가 호출된다.

월드가 해체되면 온라인 서브시스템을 종료한다.

 

각 액터의 BeginDestory() 함수가 호출된다.

각 액터의 FinishDestory() 함수가 호출된다.

 

온라인 서브시스템을 파괴한다.

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그