본문 바로가기
Unreal/Manual

Unreal 게임이 실행중인지 에디터에서 편집중인지 확인하기

by Dev_카페인 2023. 12. 28.
반응형

[Unreal/C++] 게임이 실행중인지 에디터에서 편집중인지 확인하기

 

Unreal 엔진에서 작업하다보면 현재 상태가 궁금한 적이 있을 것이다.

실행중이 아닌데 Unreal Editor가 Fatal Error를 내며 꺼진다거나 Montage 실행 중 Notify에 의해 null을 만나 종료된 적도 있을 것이다.

 

이러한 현상은 언리얼 엔진의 실행 프로세스가 꽤나 복잡하기 때문이다.

에디터에서는 실행중이 아니지만 엔진 내부에서 여러가지 프로세스가 실행된다.

초기화는 물론 생성자, 애니메이션, Preview 등 여러가지 기능들을 계속 감시하고 있는데 Editor에서 실행중이 아님에도 에러가 나는 현상은 꽤나 번거롭다.

매번 다시 키는 일도 쌓이면 한숨만 나오기 쉽다.

 

이러한 현상을 조금은 줄여줄 수 있는 방법이 있다.

현재 언리얼 엔진이 PIE상태인지 Preview 상태인지 확인하여 작업하는 것이다.

상태를 확인하는 방법은 World의 State를 가져오는 것이다.

WorldType이 Unreal Engine에 정의되어 있다.

WorldType은 8가지 상태를 가지고 있는데 이들 중 EditorPreview가 유용하게 쓰인다.

 

None 유형이 지정되지 않은 세계
Game 게임 중
Editor 에디터에서 편집 중
PIE 에디터에서 플레이 중
EditorPreview 편집기 도구의 미리보기 세계
GamePreview 게임의 미리보기 세계
GameRPC 게임을 위한 최소 RPC 세계
Inactive 로드되었지만 현재 레벨 에디터에서 편집되고 있지 않은 에디터 월드

 

 

WorldType을 가져와 상태를 체크해보자.

switch (GetWorld()->WorldType)
{
    case EWorldType::None: break;
    case EWorldType::Game :break;
    case EWorldType::Editor : break;
    case EWorldType::PIE : break;
    case EWorldType::EditorPreview : break;
    case EWorldType::GamePreview : break;
    case EWorldType::GameRPC: break;
    case EWorldType::Inactive: break;
}

 

 

 

EWorldType::Type

Specifies the goal/source of a [UWorld](API\Runtime\Engine\Engine\UWorld) object

docs.unrealengine.com

Unreal Engine, UE, Editor, Preview, PIE, Game

반응형