

Create Widget 노드는 언리얼 엔진 블루프린트에서 Widget Blueprint(위젯 블루프린트) 에셋을 인스턴스화하여 게임 실행 중에 사용할 수 있는 UI 객체로 만드는 데 사용되는 필수적인 노드입니다.
Create Widget 노드의 역할
Create Widget 노드는 단순히 UI를 디자인하는 에셋 파일(Widget Blueprint)을 가져와 실제 게임 화면에 띄울 수 있는 객체로 메모리에 생성하는 역할을 합니다. 이 과정은 마치 Class를 기반으로 Object를 만드는 것과 같습니다.
1. 입력 핀 (Inputs)
입력 핀
|
유형
|
설명
|
Class
|
Widget Blueprint Class
|
어떤 위젯 블루프린트를 생성할지 지정합니다. 드롭다운 메뉴를 통해 미리 생성해 둔 위젯 블루프린트 파일을 선택합니다.
|
Owning Player
|
Player Controller (Object)
|
이 위젯을 소유할 플레이어 컨트롤러를 지정합니다. 일반적으로 Get Player Controller 노드를 연결하여 현재 플레이어의 컨트롤러를 지정합니다. 이 소유권은 위젯이 데이터를 바인딩하거나 입력 이벤트를 처리하는 데 중요합니다.
|
2. 출력 핀 (Outputs)
출력 핀
|
유형
|
설명
|
Return Value
|
Widget Blueprint Object
|
새로 생성된 위젯 객체입니다. 이 객체는 해당 위젯 블루프린트 클래스의 모든 변수와 함수에 접근할 수 있는 레퍼런스(참조) 역할을 합니다.
|
사용 단계 (HUD 생성 예시)
Create Widget 노드는 보통 게임 시작 시 플레이어의 HUD(체력, 점수 등)를 화면에 표시할 때 사용됩니다.
- 생성 (Create):
- 위치: 보통 Player Controller 또는 **Character Blueprint**의 **Event BeginPlay**에서 실행됩니다.
- 로직: Event BeginPlay → Create Widget 노드 연결. Class 핀에 표시하려는 위젯 블루프린트(예: WBP_HUD)를 선택하고, Owning Player 핀에 **Get Player Controller**를 연결합니다.
- 화면에 추가 (Add):
- Create Widget 노드는 위젯을 메모리에 만들 뿐, 화면에 표시하지는 않습니다.
- Return Value 핀을 드래그하여 Add to Viewport 노드를 실행해야 합니다. 이 노드가 위젯을 최종적으로 게임 화면에 띄우는 역할을 합니다.
- 참조 저장 (Save Reference):
- Return Value 핀을 **변수 (Variable)**로 승격(Promote to Variable)시켜 저장합니다. 이렇게 저장된 참조를 통해 게임 플레이 중 언제든지 생성된 위젯 객체에 접근하여 체력 업데이트, 애니메이션 재생, 메뉴 토글 등의 작업을 수행할 수 있습니다.
결론적으로, Create Widget은 위젯 블루프린트 에셋을 화면에 띄우고 상호 작용할 수 있는 실제 객체로 만드는 첫 번째 단계입니다.


Add to Viewport 를 통해 화면에 메뉴가 나오도록 설정
Add to Viewport 노드는 언리얼 엔진 블루프린트에서 Create Widget 노드를 통해 메모리에 생성된 위젯 객체를 실제로 **플레이어의 화면(뷰포트)**에 띄워 표시하는 데 사용되는 필수적인 노드입니다.
Add to Viewport 노드의 역할
Create Widget 노드는 위젯 객체를 메모리(RAM)에 생성할 뿐입니다. 이 위젯이 사용자에게 보이려면 게임 화면에 부착되어야 하는데, 이 역할을 **Add to Viewport**가 담당합니다.
1. 작동 방식
- 입력 핀 (Input): 실행 핀(Exec 핀)을 받아 노드를 활성화합니다.
- 타겟 핀 (Target): 이 노드는 User Widget 타입의 객체를 타겟으로 받습니다. 여기에 Create Widget 노드의 Return Value 핀을 연결하여, 방금 생성된 위젯 객체를 지정합니다.
- 결과: 지정된 위젯이 플레이어의 최종 렌더링 화면에 겹쳐 표시됩니다.
2. 주요 사용 목적
노드
|
역할
|
실행 결과
|
Create Widget
|
위젯 객체를 생성 (메모리 로드)
|
아직 화면에는 보이지 않음
|
Add to Viewport
|
생성된 위젯을 화면에 표시 (렌더링)
|
플레이어에게 UI가 보이기 시작함
|
3. 화면 제거 (Remove)
위젯을 화면에서 제거하고 싶을 때는 Remove from Parent 노드를 사용합니다. 이 노드는 위젯을 뷰포트에서 제거하고, 동시에 해당 위젯이 차지하던 메모리 공간을 반환할 수 있도록 합니다.
[버튼 On Clicked] → [위젯 변수] → [Remove from Parent]
|
4. 구현 예시
일반적으로 HUD를 화면에 띄우는 전체 흐름은 다음과 같습니다.
- Event BeginPlay (시작)
- → Create Widget (HUD 위젯 생성)
- → Add to Viewport (화면에 HUD 표시)
- → (선택 사항) **Return Value**를 변수로 승격하여 추후 위젯의 기능(예: 체력 업데이트)에 접근할 수 있도록 저장합니다.

언리얼 엔진 블루프린트에서 **Get Player Controller**와 Enable Input 노드는 사용자 입력(Input)을 처리하고 게임 플레이어와 상호작용하는 데 필수적인 노드들입니다.
Get Player Controller 노드
Get Player Controller 노드는 현재 게임을 플레이하는 사용자와 관련된 Player Controller(플레이어 컨트롤러) 객체를 가져오는 함수 노드입니다.
역할
게임에서 Player Controller는 플레이어의 **입력(마우스, 키보드, 게임패드 등)**을 처리하고, 캐릭터(Pawn)를 소유(Possess)하며, UI(위젯)와의 상호작용을 관리하는 핵심적인 객체입니다.
Get Player Controller 노드는 블루프린트의 어느 곳에서든 특정 플레이어의 컨트롤러에 접근할 수 있는 참조(Reference)를 제공합니다.
주요 속성
속성
|
설명
|
Player Index
|
어떤 로컬 플레이어의 컨트롤러를 가져올지 지정합니다. 싱글 플레이어 게임에서는 항상 0 (첫 번째 플레이어)을 사용합니다. 분할 화면(Splitscreen) 멀티플레이어에서는 다른 인덱스를 사용합니다.
|
Return Value
|
찾은 Player Controller 객체의 참조를 반환합니다. 이 참조를 통해 컨트롤러의 함수나 변수에 접근할 수 있습니다.
|
사용 예시
- UI 생성: Create Widget 노드의 Owning Player 핀에 연결하여, 위젯이 어느 플레이어의 컨트롤러에 속하는지 지정합니다.
- 카메라 전환: 플레이어 컨트롤러를 통해 게임 카메라를 제어합니다.
- 입력 활성화/비활성화: 아래 설명할 Enable Input 노드의 타겟으로 사용됩니다.
Enable Input 노드
Enable Input 노드는 특정 액터가 해당 Player Controller로부터 입력 이벤트를 받을 수 있도록 활성화하는 함수 노드입니다.
역할
언리얼 엔진은 기본적으로 Player Controller와 Pawn/Character 액터에게만 입력을 전달합니다. 만약 플레이어가 조작하는 캐릭터가 아닌 다른 액터(예: 상호작용 가능한 문, 메뉴 시스템을 관리하는 액터)가 키보드 입력을 받아야 한다면, 이 액터에게 해당 입력을 받을 권한을 부여해야 합니다.
주요 속성
입력 핀
|
유형
|
설명
|
Target
|
Actor Object
|
입력을 활성화할 액터를 지정합니다. 이 노드가 있는 블루프린트 자체(Self)일 때가 많습니다.
|
Player Controller
|
Player Controller Object
|
어떤 플레이어의 입력을 받을지 지정합니다. 여기에 Get Player Controller의 반환 값을 연결합니다.
|
사용 예시
- 상호작용 가능한 문: 플레이어가 문 앞에 접근했을 때만 F 키 같은 상호작용 키 입력을 문 블루프린트가 받도록 하기 위해 사용합니다.
- On Component Begin Overlap → Enable Input (Target: Self, Player Controller: Get Player Controller)
- 메뉴 시스템: 캐릭터를 조작하는 동안 P 키를 눌러 일시 정지 메뉴를 띄우고, 메뉴 블루프린트가 입력을 처리하도록 할 때 사용합니다.
비활성화 (Disable Input)
Enable Input과 반대로, Disable Input 노드는 특정 액터가 더 이상 입력 이벤트를 받지 못하도록 비활성화합니다. 이는 플레이어가 메뉴를 열거나 시네마틱을 보는 동안 캐릭터 조작을 막을 때 유용합니다.
요약: **Get Player Controller**로 '누가' 입력을 조작하는지 가져오고, **Enable Input**으로 **'어떤 액터'**가 그 입력을 받을 수 있는지 권한을 부여합니다.

위에 있는 Context Sensitive의 체크박스를 꺼야 Get Show Mouse Cursor와 Set Show Mouse Cursor 노드가 나옵니다.
Get Show Mouse Cursor와 Set Show Mouse Cursor 노드는 언리얼 엔진에서 플레이어의 마우스 커서 표시 여부를 제어하는 데 사용되는 함수 노드이며, 주로 Player Controller를 통해 작동합니다.
이 노드들은 게임 플레이와 UI 상호작용 간에 마우스 사용 모드를 전환할 때 필수적입니다.
1. Get Show Mouse Cursor 노드
Get Show Mouse Cursor 노드는 현재 Player Controller가 마우스 커서를 화면에 표시하도록 설정되어 있는지 여부를 확인합니다.
역할
현재 마우스 커서 상태(표시 중인지, 숨김 상태인지)를 확인합니다. 이 정보를 기반으로 다음 동작(예: 마우스 커서가 이미 보인다면 다시 켤 필요 없음)을 결정하는 조건부 로직을 만들 때 유용합니다.
출력 핀
|
유형
|
설명
|
Return Value
|
Boolean (불리언)
|
**True**면 마우스 커서가 표시되도록 설정된 상태이며, **False**면 숨겨지도록 설정된 상태입니다.
|
사용 예시
메뉴를 열 때 "마우스 커서가 이미 켜져 있다면 상태를 변경하지 마라"와 같은 조건 분기(Branch) 로직을 구현하는 데 사용됩니다.
2. Set Show Mouse Cursor 노드
Set Show Mouse Cursor 노드는 Player Controller에게 마우스 커서를 화면에 표시할지, 숨길지 설정하도록 명령합니다.
역할
마우스 커서의 가시성 상태를 변경합니다. 게임 플레이 중에는 마우스 커서를 숨기고, 메뉴나 인벤토리 같은 UI를 열 때는 커서를 표시할 때 주로 사용됩니다.
입력 핀
|
유형
|
설명
|
Target
|
Player Controller
|
어떤 플레이어의 컨트롤러를 제어할지 지정합니다. (보통 Get Player Controller연결)
|
Show/New Visibility
|
Boolean (불리언)
|
**True**를 입력하면 커서가 화면에 표시되고, **False**를 입력하면 커서가 숨겨집니다.
|
사용 예시
- 메뉴 열기: 일시 정지 메뉴를 띄울 때, **Set Show Mouse Cursor**에 **True**를 연결하여 플레이어가 마우스로 메뉴를 조작할 수 있게 합니다.
- 게임 플레이 복귀: 메뉴를 닫고 게임 플레이로 돌아갈 때, **Set Show Mouse Cursor**에 **False**를 연결하여 커서를 숨기고 조준점을 다시 활성화합니다.
참고: 입력 모드 전환과의 관계
마우스 커서의 가시성을 설정하는 것 외에도, UI를 조작할 때는 일반적으로 **입력 모드(Input Mode)**도 함께 전환해야 합니다.
마우스 커서 상태
|
일반적인 입력 모드
|
사용 목적
|
Set Show Mouse Cursor(True)
|
Set Input Mode UIOnly 또는 GameAndUI
|
마우스 커서가 보이고, UI 버튼을 클릭하거나 상호작용할 수 있습니다.
|
Set Show Mouse Cursor(False)
|
Set Input Mode GameOnly
|
마우스 커서가 숨겨지고, 모든 입력이 캐릭터 조작(게임)에만 사용됩니다.
|

블루프린트에서 Keyboard(키보드) 노드와 Flip Flop 노드는 사용자 입력에 반응하여 게임 흐름을 제어하는 데 사용되는 핵심적인 노드입니다.
Keyboard 노드 (Input Action/Event)
Keyboard 노드는 사용자가 키보드의 특정 키를 누르거나 뗄 때(Press/Release) 게임 로직을 실행하는 **입력 이벤트(Input Event)**입니다. 이 노드는 게임 내에서 플레이어의 조작을 감지하는 기본 수단입니다.
작동 방식
키보드 노드는 일반적으로 두 가지 출력 실행 핀을 가집니다.
- Pressed (눌림): 키를 처음 누르는 순간 한 번 실행됩니다. (예: 점프 시작, 총 발사)
- Released (떼어짐): 누르고 있던 키를 놓는 순간 한 번 실행됩니다. (예: 점프 중단, 총 발사 중지)
사용 예시
- F 키 입력: 플레이어가 상호작용 가능한 물체 앞에서 F 키를 누르면 Pressed 핀에 연결된 로직(예: 문 열기)이 실행됩니다.
- Spacebar 입력: Spacebar 키를 눌렀을 때 (Pressed) 캐릭터가 점프를 시작하고, 키를 떼었을 때 (Released) 점프 관련 로직을 종료하는 데 사용됩니다.
Flip Flop 노드
Flip Flop 노드는 하나의 입력 실행 흐름을 받아 두 개의 다른 실행 흐름(A와 B)을 번갈아 가며(Toggle) 실행하는 제어 흐름(Flow Control) 노드입니다.
역할
Flip Flop 노드는 주로 토글(Toggle) 기능, 즉 하나의 키 입력으로 두 가지 상태를 전환해야 할 때 사용됩니다.
작동 방식
Flip Flop 노드에는 세 가지 주요 핀이 있습니다.
- Input (입력): 이 핀에 연결된 로직이 실행될 때마다 Flip Flop의 상태가 전환됩니다.
- A (출력 A): 입력이 들어왔을 때, **현재 상태가 A**라면 이 핀에 연결된 로직을 실행합니다.
- B (출력 B): 입력이 들어왔을 때, **현재 상태가 B**라면 이 핀에 연결된 로직을 실행합니다.
사용 예시
가장 일반적인 예시는 한 키로 메뉴를 켜고 끄는 토글 기능입니다.
- Keyboard 노드의 Pressed 핀을 **Flip Flop**의 **Input**에 연결합니다.
- A 핀에 연결된 로직: 메뉴 위젯을 생성하고 화면에 표시(Create Widget → Add to Viewport)한 후, 입력을 UI 모드로 전환합니다. (메뉴 켜기)
- B 핀에 연결된 로직: 메뉴 위젯을 화면에서 제거(Remove from Parent)하고, 입력을 게임 플레이 모드로 되돌립니다. (메뉴 끄기)
이 외에도 라이트를 켜고 끄는 등의 상태 전환이 필요한 모든 경우에 Flip Flop 노드를 효율적으로 사용할 수 있습니다.

'Unreal Engine' 카테고리의 다른 글
Unreal Engine 화면에 메뉴 만들기 (0) | 2025.10.03 |
---|---|
Unreal Engine 블루프린트를 이용한 반응형 애니메이션 작동하도록 설정하기 (0) | 2025.10.03 |
Ureal Engine 플레이어에 반응해서 열리는 문 제작하기 (0) | 2025.10.03 |
Unreal Engine 제작한 위젯 사용하는 방법 (0) | 2025.10.01 |
Unreal Engine 위젯 사용 시 주위할 점(동일한 레벨에 저장하기) (0) | 2025.09.30 |