팀프로젝트에서 게임 시작 시 바로 게임을 플레이하는 것이 아닌, 메인메뉴가 뜨도록 구현하려 하였음
팀원분과 얘기하여, 시작레벨을 메인메뉴 전용 레벨로 설정하고 메뉴가 뜨도록 구현
FString CurrentMapName = GetWorld()->GetMapName();
if (CurrentMapName.Contains(TEXT("Menu")))
{
UMenuWidget::ShowMainMenuStatic(this, MenuWidgetClass, false);
}
하지만, start버튼 눌러 게임을 시작하려 하면 게임이 터지는 에러 발생
해당 메뉴위젯을 만든 팀원과 상의하며 서로 브랜치도 따로 만들어보고, 로그도 하나씩 찍어보면서 에러의 원인을 같이 찾아봄
로그 찍어보며 확인해 본 결과, OpenLevel이 실행되면서 에러가 난 것을 확인하였고 이름 팀원에게 알려주어 팀원분께서 해당 레벨을 확인해주심
그 결과, 게임플레이가 되려는 레벨에서 기존에 사용하던 GameMode가 아닌 해당 레벨 에셋의 게임모드로 설정되어 레벨이 열리고 에러 나 게임이 터진 것이었음
게임모드 바꿔주고, 다시 해보니 잘 작동 된 것을 확인
이제 esc 눌렀을 때도 메뉴를 뜨게하려 하였음
OutGameUI 담당분과 얘기하여, 팀원분은 UI와 UI클릭 시 로직을 구현하고, 나는 esc키를 누르는 인풋을 담당하기로 하였음
기존 Enhanced Input System과 비슷하게 IA만들어주고 IMC도 만듦
다만, Binding해주는 부분은 플레이어 객체에서가 아니라 Controller에서 해줌
이유
void AMyPlayerController::SetupInputComponent()
{
Super::SetupInputComponent();
if (UEnhancedInputComponent* EnhancedInput =
Cast<UEnhancedInputComponent>(InputComponent))
{
EnhancedInput->BindAction(
EscAction,
ETriggerEvent::Started,
this,
&AMyPlayerController::ShowEscMenu
);
}
}