위젯 만들기

게임에서 위젯 블루프린트를 만들고 표시하는 법입니다.

Windows
MacOS
Linux

위젯 블루프린트 를 만들고 배치한 이후 게임에서 표시되도록 하기 위해서는, 다른 (레벨 블루프린트 또는 캐릭터 블루프린트 등의) 블루프린트에서 Create WidgetAdd to Viewport 노드를 사용하여 호출해 줘야 합니다.

CreateWidgetNode.png

위 예제에서 Create Widget 노드는 Class 섹션 아래 지정된 위젯 블루프린트 를 호출하고 그 Return Value 는 제품 결과물입니다 (Owning PlayerPlayer Controller 이며, 기본 플레이어 컨트롤러의 빈 결과에 적용되어 있습니다). Add to Viewport 가 위젯 블루프린트를 화면상에 그리며, 생성된 위젯을 담는 Main Menu 변수를 추가 타깃으로 지정하고 있습니다.

추가적으로, Return Value 가 Main Menu 라는 제목의 변수에 할당되어 있어, 나중에 위젯을 다시 만들지 않고도 위젯 블루프린트에 접근할 수 있으며, 필요하다면 위젯을 제거할 수도 있습니다.

위젯이 표시되지 않도록 하려면 Remove from Parent 노드를 사용하여 타깃 위젯 블루프린트를 지정합니다.

RemoveFromViewport.png

Set Input Mode 및 Show Cursor

플레이어가 UI 상호작용을 못하게 했으면 하는 경우도 있을 수 있고, 사용자가 UI 를 완전히 무시했으면 하는 경우도 있을 수 있습니다. 플레이어와 UI 의 상호작용 방식을 결정하는 데 사용되는 노드가 몇 가지 있는데, 아래에서 보듯이 Set Input Mode 입니다.

SetInputModes.png

  • 위에서 왼쪽 노드 Set Input Mode Game and UI 는, 이름과 같은 작업을 하며, 플레이어가 입력은 물론 UI 를 통해서도 게임 조작을 할 수 있게 됩니다 (예를 들어 화면상에서 캐릭터를 제어하는 것 뿐만 아닌, 특정 버튼이나 UI 요소 클릭에도 접근 가능합니다).

  • 위에서 가운데 노드 Set Input Mode Game Only 는, 게임에 대한 입력만 가능하고 UI 요소는 무시합니다 (생명력, 점수, 시간 표시처럼 비상호작용형 UI 요소에 좋습니다).

  • 위에서 오른쪽 노드 Set Input Mode UIOnly 는 특수한 경우에 대비한 것으로, 게임 입력이 아닌 UI 조작만 가능하도록 하는 경우에 쓰입니다. 이는 모든 게임 조작을 비활성화시키고 UI 가 모든 입력을 소모하게 합니다. 이 노드는 신중히 사용하세요.

위의 노드에 추가로, 마우스 커서 표시를 켜고/끌 수 있으면 좋습니다. 그럴 때 Set Show Mouse Cursor 노드를 사용하면 됩니다. Get Player Controller 노드를 끌어 놓은 다음 Set Show Mouse Cursor 노드를 사용하여 True 또는 False 체크를 하면 마우스 커서를 표시 또는 숨깁니다.

ShowCursor.png

위에서, I 는 마우스 커서 표시/숨김을 토글하는 데 사용됩니다.

위젯에 위젯 추가하기

다른 위젯에 위젯을 추가하려면 부모-자손 관계를 만들어 두 번째 위젯을 첫 번째 위젯 아래 중첩시켜 놓습니다. 그 방법은, 단순히 자손 위젯을 부모 위젯에 덧붙이면 됩니다. Add to Viewport 함수를 사용할 필요는 없습니다.

AddChild.png

위 예제는 start_Button 이라는 Scroll Box 위젯을, Add Child 함수를 사용하여 Main Menu 라는 새 위젯에 덧붙이는 방법을 보여줍니다.

Add Child 노드는 한 패널 내에서 한 위젯과 다른 위젯에 부모자손 관계를 만드는 노드인 반면, Add to Viewport 는 위젯이 마치 새로운 창인 양 루트 뷰포트에 추가해 줍니다. 자손 위젯을 제거하려면 부모에서 RemoveChild 가 호출되도록 해야합니다.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼