이 가이드에서는 두 개의 버튼이 있는 간단한 텍스트 음성 변환(Text To Speech) 위젯을 생성하고 활성화하는 방법을 설명합니다. 사용자는 각 버튼을 클릭하여 텍스트 스트링을 음성화할 수 있습니다.
필요한 사전 지식과 설정
이 페이지에 요약된 단계를 완료하려면 다음이 필요합니다.
-
언리얼 모션 그래픽(Unreal Motion Graphics, UMG) UI 에디터의 기본 원리를 이해합니다.
-
새로운 언리얼 엔진 프로젝트를 생성합니다. 원하는 템플릿을 사용하면 됩니다.
-
프로젝트에서 텍스트 음성 변환 플러그인을 활성화합니다. 이 단계를 완료하는 데 도움이 필요하면 플러그인으로 작업하기 페이지를 참조하세요.
새로운 위젯 블루프린트 생성
이 단계에서는 화면에 표시되는 위젯을 생성합니다.
-
콘텐츠 브라우저(Content Browser) 또는 콘텐츠 드로어(Content Drawer) 의 빈 영역을 우클릭합니다. 컨텍스트 메뉴 에서 유저 인터페이스(User Interface) > 위젯 블루프린트(Widget Blueprint) 를 선택합니다.
-
사용자 위젯(User Widget) 클래스를 선택하고 선택(Select) 을 클릭하여 위젯을 생성합니다.
-
새로운 위젯의 이름을 MyWidget 으로 지정합니다.
-
위젯 블루프린트(Widget Blueprint) 를 더블클릭하여 위젯 에디터(Widget Editor) 에서 열고, 다음과 같이 두 개의 버튼이 있는 단순한 레이아웃을 생성합니다. 이 튜토리얼에서 버튼의 크기와 배치는 중요하지 않습니다. 버튼을 쉽게 클릭할 수 있기만 하면 됩니다.
-
위젯을 컴파일(Compile) 하고 저장(Save) 한 후 위젯 에디터를 최소화합니다.
레벨 블루프린트에 위젯 추가
다음으로 레벨 블루프린트(Level Blueprint)에 위젯을 추가하여 게임이 시작될 때 화면에 표시되게 합니다.
-
메인 툴바(Main Toolbar) 에서 레벨 블루프린트(Level Blueprint) 를 엽니다.
-
레벨 블루프린트(Level Blueprint) 내 Event BeginPlay 노드의 실행 핀으로부터 드래그합니다. Create Widget 을 검색해 선택하고 Enter 를 눌러 노드를 생성합니다.
-
Create Widget 노드의 실행 핀으로부터 드래그하여 Add to Viewport 노드를 생성합니다.
-
Add to Viewport 노드의 실행 핀으로부터 드래그하여 Set Input Mode UI Only 노드를 생성합니다.
이 노드는 플레이어 입력에 반응하는 유일한 게임 엘리먼트가 UI임을 위젯에 알립니다. 사용자의 다른 입력은 게임플레이 액션으로 변환되지 않습니다. 해당 컨트롤에 액션이 바운드되어 있어도 마찬가지입니다.
-
블루프린트 에디터(Blueprint Editor) 의 빈 영역을 우클릭하여 Get Player Controller 노드를 생성합니다.
-
2단계에서 생성한 Construct Widget 노드의 반환 값(Return Value) 핀을 다음 핀에 연결합니다.
- Add to Viewport 노드의 타깃(Target) 핀
- Set Input Mode UI Only 노드의 In 포커스할 위젯(In Widget to Focus) 핀
-
5단계에서 생성한 Get Player Controller 노드의 반환 값(Return Value) 핀을 Set Input Mode UI Only 노드의 플레이어 컨트롤러(Player Controller) 핀으로 연결합니다.
이 단계에서 레벨 블루프린트는 다음 이미지와 같이 됩니다.
-
Get Player Controller 노드의 반환 값(Return Value) 핀으로부터 드래그하여 Set Show Mouse Cursor 노드를 생성합니다. 이 노드의 마우스 커서 표시(Show Mouse Cursor) 체크박스를 활성화합니다.
-
Set Input Mode UI Only 노드의 출력 핀을 Set Show Mouse Cursor 노드의 입력 핀에 연결합니다.
-
Create Widget 노드의 클래스(Class) 값을 이전 섹션에서 생성한 MyWidget 위젯으로 설정합니다.
-
블루프린트를 컴파일(Compile) 하고 저장(Save) 합니다.
완성된 레벨 블루프린트는 다음과 같이 됩니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
이제 레벨 블루프린트를 닫으면 됩니다.
텍스트 음성 변환 스트링 추가
다음으로 각 버튼이 '음성화'할 때 사용할 채널을 생성하고, 음성화할 텍스트 스트링을 입력합니다.
-
위젯 에디터(Widget Editor) 의 위젯으로 돌아갑니다. MyWidget 위젯을 닫았다면 콘텐츠 브라우저(Content Browser) 에서 이 위젯을 더블클릭하여 다시 엽니다.
-
생성한 버튼 중 하나를 클릭합니다. 그런 다음 오른쪽의 디테일(Details) 패널에서 이벤트(Events) 로 스크롤한 후 더하기 부호(+) 를 클릭하여 클릭 시(On Clicked) 이벤트를 새로 추가합니다.
이렇게 하면 위젯의 그래프(Graph) 가 열리고 이 버튼의 On Clicked 노드가 새로 생성됩니다.
-
그래프 내에서 우클릭한 후 새로운 Get TextToSpeechEngineSubsystem 노드를 생성합니다.
이 노드가 표시되지 않으면 프로젝트에서 텍스트 음성 변환(Text To Speech) 플러그인이 활성화되어 있는지 확인합니다.
-
Text to Speech Engine Subsystem 노드로부터 드래그하여 새로운 Add Default Channel 노드를 생성합니다. 클릭 시(On Clicked) 이벤트를 Add Default Channel 노드의 입력 핀에 연결합니다.
-
Add Default Channel 노드에서 새 채널 ID(New Channel ID) 프로퍼티를 우클릭하고 컨텍스트 메뉴의 변수로 승격(Promote to Variable) 을 선택합니다.
-
오른쪽의 디테일(Details) 패널에서 변수 이름(Variable Name) 프로퍼티를 사용하여 변수 이름을 Channel One 으로 지정합니다.
-
다시 Text to Speech Engine Subsystem 노드로부터 드래그하여 새로운 Activate Channel 노드를 생성합니다. Add Default Channel 노드의 출력 핀을 Activate Channel 노드의 입력 핀에 연결합니다.
-
4단계에서 생성한 Channel One 변수를 Activate Channel 노드의 채널 ID(Channel ID) 핀에 연결합니다.
이 단계에서 블루프린트는 다음과 같이 됩니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
-
다시 Text to Speech Engine Subsystem 노드로부터 드래그하여 새로운 Speak on Channel 노드를 생성합니다. Activate Channel 노드의 출력 핀을 Speak on Channel 노드의 입력 핀에 연결합니다.
-
4단계에서 생성한 Channel One 변수를 Activate Channel 노드의 채널 ID(Channel ID) 핀에 연결합니다.
-
Speak on Channel 노드의 음성화할 스트링(String to Speak) 핀으로부터 드래그하여 새로운 To String (Text) 노드를 생성합니다.
-
이전 단계에서 생성한 To String (Text) 노드의 입력 핀으로부터 드래그하여 새로운 Format Text 노드를 생성합니다.
-
Format Text 노드의 포맷(Format) 박스에 음성화할 텍스트를 입력합니다.
-
생성한 두 번째 버튼에도 위의 1~12단계를 반복하되, 해당하는 경우 Channel One을 Channel Two로 변경합니다.
여러 블루프린트 노드를 클릭하고 드래그하여 복사하고 붙여넣을 수 있습니다. 이렇게 하면 수동으로 단계를 반복하는 수고를 줄일 수 있습니다.
-
블루프린트를 컴파일 하고 저장 합니다.
완성된 위젯 블루프린트는 이제 다음과 같이 됩니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
위젯 테스트
이제 위젯을 테스트할 차례입니다.
레벨 뷰포트(Level Viewport) 의 메인 툴바(Main Toolbar) 에서 플레이(Play) 버튼을 클릭하여 에디터에서 플레이(Play in Editor) 모드로 전환합니다.

이제 위젯이 뷰포트 안에 표시된 것을 볼 수 있습니다. 버튼을 클릭하여 해당 스트링이 음성화되는 것을 듣습니다.
