본문 바로가기
[ Unreal5 ]/- 언리얼엔진5 멀티

언리얼엔진5 Menu Class Setup

by MRG 2025. 3. 3.
728x90
반응형

 

▣ MenuWidget이라는 이름설정 후 MultiplayerSessions Plugin으로 설정하고 클래스를 생성합니다. 

 

 

▣ 그럼 이런 문구가 나옵니다.
이 메시지는 Unreal Engine 5에서 새로운 C++ 클래스를 추가했지만, MultiplayerSessions 모듈을 다시 컴파일해야 한다는 것을 의미합니다. 그리고 자동 핫 리로드(hot reload)에 실패했다는 것도 함께 나타납니다.
Yes 버튼을 클릭하고 언리얼엔진을 닫은 후에

 

 

 

▣ Build.cs에서 UMG 모듈을 추가하고 Generate를 하면 해결됩니다. 

 

 

▣ 다시 Build.cs에서 Slate와 SlateCore를 추가합니다. 

Slate와 SlateCore는 Unreal Engine의 UI 시스템인 Slate(슬레이트)를 다룰 때 필요한 모듈입니다. 

Slate는 UE5에서 UI를 만들기 위해 사용되는 C++ 기반의 UI 프레임워크이며, Slate와 SlateCore는 이 시스템을 사용할 때 필수적으로 포함해야 하는 모듈입니다.

 

 

▣ 코드 설명
- AddToViewport();
현재 UMenuWidget을 뷰포트(Viewport)에 추가하여 화면에 표시되도록 합니다.
UUserWidget 클래스에서 제공하는 기본 함수입니다.

- SetVisibility(ESlateVisibility::Visible);
위젯이 보이도록 가시성을 설정합니다.
ESlateVisibility 열거형(enum) 값 중 Visible을 사용하여 위젯을 화면에 표시합니다.

- bIsFocusable = true;
위젯이 포커스를 받을 수 있도록 설정합니다.
이를 설정하지 않으면 UI 입력을 받을 수 없을 수 있습니다.

- UWorld* World = GetWorld();
현재 게임의 UWorld 객체를 가져옵니다.
UWorld는 게임의 전체적인 세계를 관리하는 객체로, 레벨 및 플레이어 정보를 포함합니다.

- APlayerController* PlayerController = World->GetFirstPlayerController();
첫 번째 플레이어 컨트롤러를 가져옵니다.
APlayerController는 플레이어의 입력을 처리하고, UI 상호작용을 관리하는 클래스입니다.

- FInputModeUIOnly InputModeData;
UI 전용 입력 모드를 설정하는 구조체(FInputModeUIOnly)를 생성합니다.
이 모드는 UI 입력만 허용하고, 게임 내 캐릭터 조작 등의 입력을 차단합니다.

- InputModeData.SetWidgetToFocus(TakeWidget());
현재 위젯을 포커스를 받을 대상으로 설정합니다.
TakeWidget()은 UUserWidget을 TSharedRef<SWidget> 형태로 변환하여 반환하는 함수입니다.

- InputModeData.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock);
마우스 커서를 뷰포트 내에서 고정할지 여부를 설정합니다.
EMouseLockMode::DoNotLock을 사용하면 마우스가 화면 밖으로 이동할 수 있습니다.

- PlayerController->SetInputMode(InputModeData);
플레이어 컨트롤러에 UI 전용 입력 모드를 적용하여 UI와 상호작용할 수 있도록 합니다.

- PlayerController->SetShowMouseCursor(true);
마우스 커서를 화면에 표시하도록 설정합니다.
게임 플레이 중에는 기본적으로 마우스 커서가 숨겨져 있지만, UI 모드에서는 커서가 필요하므로 이를 활성화합니다.

 

 

▣ Widget 클래스에 자식으로 블루프린트를 생성합니다. 

 

 

▣ WBP_Menu에서 위에 이미지처럼 Widget을 제작합니다. 

 

 

▣ 언리얼엔진을 닫고 프로젝트 파일과 플러그인파일에서 Binaries, Intermediate, Save파일을 삭제하고 Generate를 합니다. 

 

 

▣ 그리고 다시 프로젝트를 열고 Level bleuprint에서 Widget클래스에 있는 MenuSetup함수가 보이게 됩니다.

728x90
반응형

댓글