- 개요
로비와 인게임에서 퇴장하는 기능을 추가하고 퇴장하게 되면 로비 레벨로 이동하도록 설정한다
또, 타이머를 개선하여 타이머가 무엇을 의미하는지 플레이어에게 알려준다
- 스크립트 작업
1) TimerWidget 클래스 - DedicatedServers 모듈

OnTimerStarted 함수를 추가한다
이때, BlueprintImplementableEvent 키워드를 수식하여 선언만 C++ 클래스에서 진행하고
실제 정의는 블루프린트에서 진행한다

TimerStarted 함수의 로직을 수정하여 OnTimerStarted 함수를 호출한다
2) ShooterPlayerController 클래스 - 주 모듈

OnQuitMenuOpen 델리게이트를 추가하여 퇴장 메뉴가 열려있는지를 브로드캐스트한다

ShooterPlayerController 클래스를 위와 같이 수정한다
- OnQuitMenuOpen 멤버변수 : OnQuitMenuOpen 델리게이트
- QuitAction 멤버변수 : 퇴장 메뉴를 띄울 키와 연결될 액션
- Input_Quit 멤버함수 : QuitAction이 실행되면 호출할 콜백 함수
- bQuitMenuOpen 멤버변수 : 퇴장 메뉴가 열려있는지 판단할 불리언 변수

생성자에 로직을 추가하여 bQuitMenuOpen 변수의 값을 설정한다

SetupInputComponent 함수에 로직을 추가하여 QuitAction과 Input_Quit 콜백 함수를 연결한다

Input_Quit 함수의 로직은 위와 같다
bQuitMenuOpen 변수의 값을 설정하고
퇴장 메뉴가 열려있다면 게임 플레이 + UI 모두에서 입력이 이뤄질 수 있도록 설정한다
퇴장 메뉴가 열려있지 않다면 게임 플레이에서만 입력이 이뤄질 수 있도록 설정한다
- 블루프린트 작업
1) IA_Quit InputAction 애셋 - 주 모듈

불리언 타입의 값을 반환하는 InputAction 애셋을 생성한다
2) IMC_ShooterCharacter InputMapping Context 애셋 - 주 모듈

1)에서 생성한 IA_Quit 액션에 대한 Q 키와 ESC 키를 연결한다
3) BP_ShooterPlayerController 블루프린트 - 주 모듈

Quit Action 멤버변수에 대한 값을 설정한다
4) WBP_QuitButton 위젯 블루프린트

위와 같이 디자인한 퇴장 버튼 UI를 추가한다

Graph를 위와 같이 구성하여 StartOpen 값에 따라 퇴장 버튼을 초기에 숨겨놓도록 설정한다
QuitAction에 연결된 키를 누르면 애니메이션을 역재생하여 퇴장 버튼을 화면에 표시한다
퇴장 버튼을 누르게 되면 로비가 있는 씬으로 이동한다
5) WBP_LobbyTimer + WBP_PostMatchTimer + WBP_PreMatchTimer 위젯 블루프린트

위와 같이 Graph를 구성하여 타이머의 시작과 종료에 따라 텍스트를 표시하여
타이머의 시간이 무엇을 의미하는지 플레이어에게 설명한다
6) WBP_LobbyOverlay 위젯 블루프린트

로비 UI에 퇴장 버튼을 추가하고 StartOpen의 값을 True로 설정하여 보여지도록 설정한다
7) WBP_ShooterOverlay 위젯 블루프린트

인게임 UI에 퇴장 버튼을 추가하고 StartOpen의 값을 False로 설정하여 보여지지 않도록 설정한다
- 최종 실행 결과


'언리얼 엔진 - 게임 프로젝트 > AWS GameLift를 활용한 데디케이트 FPS 프로젝트' 카테고리의 다른 글
| PlayerSession 처리 - 2) FastArraySerializer의 사용 (0) | 2026.07.16 |
|---|---|
| PlayerSession 처리 - 1) PlayerSession 승인과 제거 (0) | 2026.07.12 |
| 로비와 타이머 - 6) 플레이어 입력 제한 (0) | 2026.07.09 |
| 로비와 타이머 - 5) 로비 게임모드의 구성과 레벨 전환 (0) | 2026.07.05 |
| 로비와 타이머 - 4) 레벨 전환 및 서버 연결 상태에 따른 게임 데이터 보존과 관리 (0) | 2026.07.03 |