반응형
[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;
}
Unreal Engine, UE, Editor, Preview, PIE, Game
반응형
'Unreal > Manual' 카테고리의 다른 글
Unreal UDamageType 구현 (2) | 2024.01.02 |
---|---|
Unreal 적 사망 상태 유지, Animation 상태 유지 (0) | 2023.12.28 |
Unreal Widget Component TextBlock 사용하기 (0) | 2023.12.28 |
Unreal ApplyDamage, TakeDamage 데미지 전달 (0) | 2023.12.27 |
Unreal WidgetComponent ProgressBar 추가, 적 체력 UI (0) | 2023.12.27 |