1. 개요
언리얼 엔진에서는 플레이어가 키보드/마우스를 이용해 게임과 UI 중 어디에 입력을 보낼지 제어하기 위해 FInputMode 구조체를 사용합니다. UI 위젯을 띄웠을 때 플레이어가 게임 조작도 가능해야 하는지, 아니면 UI에만 집중해야 하는지를 정하는 설정입니다.
2. 주요 구조체 종류
구조체 | 설명 |
FInputModeGameOnly | 게임 조작만 가능. UI 반응 X |
FInputModeUIOnly | UI에만 입력. 게임 입력은 무시 |
FInputModeGameAndUI | 게임 조작 + UI 조작 둘 다 가능 |
3. 개념 설명
3-1. 포커싱(Focus)
- UI 위젯 중 어떤 UI가 키보드 입력을 받을지 정하는 것.
- 예를 들어 텍스트 입력창에 커서가 깜빡이는 상태가 “포커싱된” 상태.
- SetWidgetToFocus() 함수로 지정.
FInputModeUIOnly InputMode;
InputMode.SetWidgetToFocus(PauseWidget->TakeWidget())
PC->SetInputMode(InputMode);
PC->bShowMouseCursor = true;
TakeWidget()은 UUserWidget 내부의 Slate 루트 위젯을 받아옴( UUserWidget → SWidget 변환)
Slate 위젯
- UI를 구성하기 위한 저수준 UI 프레임워크
- 실질적으로 화면에 표시되는 UI의 렌더링과 입력 처리를 담당 -> 입력 포커싱도 그 일부
- 포커싱은 Slate 시스템 레벨에서 처리되는 기능
3-2. 마우스 락(Mouse Lock)
- 마우스 커서를 화면 안에 가두는 것.
- 예: FPS 게임에서 마우스가 화면 밖으로 나가는 걸 방지.
설정값 | 설명 |
DoNotLock | 마우스가 화면 밖으로 자유롭게 나감 |
LockAlways | 마우스를 항상 화면 안에 가둠 |
LockOnCapture | 마우스를 클릭했을 때만 화면 안에 가둠 |
InputMode.SetLockMouseToViewportBehavior(EMouseLockMode::LockAlways);
3-3. 마우스 캡쳐(Mouse Capture)
- 마우스 움직임이 엔진에 의해 직접 추적되고 처리되는 상태.
- FPS처럼 커서는 안 보이지만 마우스 움직임으로 카메라가 도는 게임이 대표적.
- 캡처된 마우스는 커서가 보이지 않고, 마우스 좌표도 고정된 상태로 처리됨.
📌 FInputModeGameAndUI에서는 아래 함수로 마우스 캡처 중 커서를 숨길지 설정 가능:
FInputModeGameAndUI InputMode;
InputMode.SetHideCursorDuringCapture(false); // 캡쳐 중 커서 숨김
'TIL > Unreal Engine' 카테고리의 다른 글
언리얼 엔진 퍼포먼스 최적화의 첫걸음 (0) | 2025.07.15 |
---|---|
언리얼 사운드 시스템 기초 (0) | 2025.06.16 |
언리얼 엔진 레벨 전환 시 로딩 방식 (0) | 2025.05.14 |
언리얼 엔진의 맵 로딩 (0) | 2025.05.08 |
AI ROV(Reciprocal Velocity Obstacles) (0) | 2025.04.24 |