게임에서 UI에 메시지를 출력하는 기능은 필수적이다.
UMG에서 만든 위젯의 내용을 블루프린트를 이용해서 상황에 맞게 사용해 보고자 한다.
먼저 위 사진과 같은 단순한 'MyHUD' HUD를 만든다.
이후 MyCharacter 블루프린트 에디터를 열어서 게임 시작 시 MyHUD를 뷰포트에 보여주도록 설정한다.
컴파일 후 실행해보면 뷰포트에 MyHUD가 나오고 있는 것을 확인할 수 있다.
이제 캐릭터가 특정 동작을 수행함에 따라 텍스트를 변경해 보자.
먼저 화면에 출력할 텍스트 변수를 만든다. 이름은 'ScreenMessage' 로 만든다.
그리고 MyHUD에서 우측 상단의 'Graph' 탭으로 전환하여 MyCharacter 변수를 만든다.
MyCharacter 클래스에서 선언한 ScreenMessage에 접근할 수 있게 하기 위함이다.
'Get player Character' 노드와 'Cast to MyCharacter' 노드를 거쳐, Promote to Variable 해 준 후 'MyCharacter' 라는 이름으로 설정한다.
이제 MyHUD에서 MyCharacter라는 변수로 접근할 수 있다.
Text Block의 'Text' 프로퍼티에서 Bind 버튼을 클릭하고, 'Create Binding'을 클릭한다. 이것은 텍스트 상자의 텍스트 값을 특정 변수에 연결함으로써, 변수를 변경시키면 텍스트가 변경될 수 있도록 하는 것이다.
MyCharacter에서 만들어둔 Screen Message 변수를 연결해 준다.
이제 Screen Message의 값이 화면에 연결되었다.
마지막으로 UseObject 이벤트가 발생하면 어떤 식으로 텍스트를 바꿀 것인지 설정해 준다.
UseObject 이벤트 트리거 노드에서 Triggered 이벤트가 발생하면 (즉 키를 누르고 있는 동안) ScreenMessage를 Hello
로 바꾸고, Completed 이벤트가 발생하면 (즉 키를 떼면) 다시 공백으로 설정해서 텍스트를 지우도록 설정했다.
이제 컴파일 후 실행해보면, F 키를 누르는 동안에는 Hello가 표시되고 떼면 사라진다.