Make Unreal REAL.
article thumbnail
이득우의 언리얼 C++ 게임 개발의 정석

 

예제 폴더의 Resource > Chapter15 > Book > UI 폴더에 있는 UI_Title.uasset 파일을 Content > Book > UI 폴더에 복사한다.

 

 

추가적인 오브젝트나 환경 없이 UI만 띄울 것이기 때문에 빈 레벨을 Empty Level로 생성하고 저장한다.

 

 

UI를 조작하기 위해 게임 모드와 플레이어 컨트롤러를 제작한다.

 

우선 새로운 UI 제어용 플레이어 컨트롤러를 만든다.

 

 

CoreMinimal.h를 ArenaBattle.h로 변경한다.

 

 

BeginPlay() 함수를 오버라이드 하도록 선언하고 UI를 생성하기 위한 클래스 변수와 UI를 저장하기 위한 변수를 생성한다.

  • BP에서 UI 클래스를 지정할 수 있도록 (EditDefaultsOnly, UIWidgetClass) 키워드를 지정한다.

 

 

UIWidgetClass에 해당하는 위젯을 생성해 UIWidgetInstance 변수에 저장하고 뷰포트에 추가한다.

 

FInputModeUIOnly Mode 구조체는 게임 입력은 무시하고 UI 입력만 활성화할 때 사용한다.

  • FInputModeUIOnly::SetWidgetToFocus(TSharedPtr<SWidget>) 함수에 슬레이트 위젯을 전달해 포커스할 위젯을 선택할 수 있다.
  • 슬레이트 위젯은 UWidget::GetCachedWidget() 함수를 통해 가져올 수 있다.

 

APlayerController::SetInputMode(FInputModeDataBase) 함수를 통해 입력 모드를 설정할 수 있다.

 

bShowMouseCursor 속성을 true로 설정해 마우스 커서를 보이도록 설정한다.

 

 

ABUIPlayerController 클래스를 부모로 하는 블루프린트 클래스를 생성한다.

 

 

띄울 위젯 클래스에 UI_Title 위젯 블루프린트를 설정해준다.

 

 

UI_Title 위젯 블루프린트를 잠깐 살펴보면 아래와 같이 설계되어 있다.

 

Construct 이벤트에서 Player1 슬롯의 게임 데이터를 불러오는 것을 시도해, 저장된 데이터가 있으면 <이어하기> 버튼을 활성화하고 없으면 비활성화한다.

 

 

<새로 시작하기> 버튼은 Select 레벨을 열고, <이어하기> 버튼은 Gameplay 레벨을 연다.

 

<게임 종료> 버튼은 Quit Game 노드를 이용해 게임을 종료시킨다.

 

 

플레이어 컨트롤러의 세팅이 끝났으니, 이 컨트롤러를 띄울 게임 모드를 생성한다.

  • 이번에는 편의상 C++ 클래스가 아닌 BP 클래스로 생성한다.

 

 

Player Controller Class를 BP_TitleUIPlayerController로 설정하고, Default Pawn Class는 X 버튼을 눌러 None으로 설정한다.

  • 기본 Pawn 클래스를 지정해도 되지만, Play 시 월드에 Pawn이 생성된다.

 

 

World Settings 패널에서 GameMode Override: BP_TitleGameMode를 설정해준다.

  • Project Settings에서 설정하지 않고 여기서 설정하면 현재 레벨에서만 설정한 게임 모드로 플레이할 수 있다.

 

 

플레이하면 타이틀 UI가 표시되고 조작할 수 있다.

 

profile

Make Unreal REAL.

@diesuki4

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

검색 태그