지난 번에 UMG 실습한 건 블루프린트로 했었는데 이번엔 C++로 해보려고 한다.
Udemy나 Inflearn 에 UMG C++ 강의가 있으면 커리큘럼대로 들어보려고 했는데
마땅한 게 없어서 베르의 게임 개발 유튜브에 있는 아래 영상을 실습했다.
튜토리얼 제대로 따라가기 (6) - UMG와 유저 인터페이스 | 언리얼 4
먼저 C++로 UMG를 이용하기 위해서는 언리얼 엔진의 모듈 종속성을 구성해야 한다.
언리얼 엔진을 구성하는 모듈은 아래 사진과 같다.
노랑색은 엔진의 기본 모듈이고, 초록색은 UI와 관련된 모듈, 파랑색은 엔진을 커스터마이징 하기 위한 모듈이다.
위젯 추가와 제거
- 언리얼엔진은 한 번에 다수의 위젯을 표시하고 상호작용 처리하는 것이 가능하다.
한 번에 하나만 활성화되도록 제거할 수도 있다.- 하지만 위젯을 직접 소멸시킬 필요는 없다.
뷰포트에서의 위젯 제거 및 레퍼런싱하는 모든 변수의 소거 작업은
언리얼 엔진의 가비지 컬렉션 시스템에서 해주기 때문이다.
엔진으로 돌아가서 컴파일하고
아래와 같이 두 개의 유저 인터페이스 > 위젯 블루프린트
를 생성한다.
MainMenu와 NewGameMenu
버튼 및 텍스트 추가
텍스트 블록
의 Visibility를 Not-Hit-Testable 로 설정하여
버튼을 누르려는 클릭을 텍스트 블록이 방해하지 않도록 한다.
Quit 버튼도 만든다
1) 블루프린트 클래스 2개 추가
Starting Widget Class를 MainMenu로 설정하여 처음 시작 시 보이게 될 위젯을 설정
Default Pawn Class를 DefaultPawn
이 아닌 Pawn
으로 설정하여 플레이어가 메뉴에 있을 때 이리저리 날아다니지 않도록(?) 해줌
Player Controller Class를 MenuPlayerController
로 설정하여 메인 메뉴에 마우스 커서가 표시되도록 만들어 줌
None
에서 MenuGameMode
로 설정여기까지하면 Quit 버튼은 정상작동하고 New Game 버튼은 아무것도 없는 NewGameMenu로 이동한다.
이제 NewGameMenu 위젯을 수정해준다.
PlayGame 버튼은 입력 박스가 비어있으면 비활성화 되어있도록 한다.
기준을 좌하단이 아닌 우하단으로 만들기 위해 앵커를 조정한다.
다음과 같이 버튼의 앵커가 변경된다.
Play Game 버튼과 Main Menu 버튼의 On Clicked 메서드 등록
여기서 Play Game 버튼은 열린 결말(?) 느낌으로 끝났다.
아직 구현된 게임이나 UI가 없어서 저렇게 두었다.
13분 정도의 영상인데 하나하나 정리하면서 들었더니 꽤 시간이 걸렸다.
배운 점 보다 많은 비중의 과정을 정리하는 건 무의미하다고 생각하는 편이었는데
지난 번 블루프린트 실습 때 과정 정리를 안했더니 머릿속에서 이어지지가 않고 개별로 둥둥 떠다니는 느낌이 들었다.
특히 언리얼은 작은 것들도 설정해주어야 하는 경우가 많아서,
나처럼 아직 초보는 이렇게 사소한 과정들도 정리를 해주고 계속 곱씹어보는 게 좋을 것 같다.
UMG를 C++로 하는 건 하나도 모르고 미지의 영역이었는데
이렇게 짧게나마 실습해보니 조금씩 감이 오는 것 같아서 다행이다..!