Ch09 Ui

4 분 소요

HUD

  • head up display 의 줄임로 UI 가 여기에 렌더링되어서 게임 화면과 합쳐짐.
  • AGameMode 에서 사용할 HUD 클래스를 지정할 수 있음.
    • 이렇게 지정한 클래스는 게임 시작시 AGameMode 가 인스턴스를 하나 만듬
    • Player 는 이 인스턴스를 관리할 수 있음
  • 내부에 UCanvas 가 있으며 HUDUCanvasPostRender() 후에 렌더링 됨.
    • UCanvas 자체적으로 텍스트나 도형을 렌더링할 수 있지만 비효율적이고 어려움
    • SSlate 으로 하면 편함
    • 디자이너는 UMG 라는 에디터에 내장된 툴을 이용함

UI Scaling

유저 인터페이스는 보통 고정픽셀이라 해상도에 영향을 크게 받음

바꾸는 방법은 2가지인데 실질적으로 하는일은 같음.

  • Project Setting -> Eingine -> User Interface -> DPI Setting
    • 여기에 DPI Curve 가 있는데 x 축이 화면 x 해상도이고 y 축이 배율임
  • DefaultEngine.ini 에서 수정하기
    • /Script/Engine.UserInterfaceSettings 의 UIScaleCurve
    • (Time=,Value=,) 절이 있는데 Time 은 화면 x 해상도고 value 는 배율임

PIE(Play in Editor) 화면크기가 720p 근처이면 720 배율을 수정하면 결과를 볼 수 있음.

UMG 란

UMG(Unreal Motion Graphics) 은 Slate Widget 용 비주얼 에디터임.

개발자는 Slate Widget 개별의 로직을 설정하고 디자이너는 이쁘게 만든다는 WPF 의 전략과 비슷함.

사용자 정의 SWidget / UWidget 만들기

SWidget 은 Slate 가 들어가고 UMG 에 표시되려면 UWidget 으로 감싸넣어야함.

class AAA {
	int64_t a; 
};
class BBB {
	virtual ~BBB();
	int64_t a;
};

int main()
{
	cout << sizeof(AAA) << endl;
	cout << sizeof(BBB) << endl;
}

댓글남기기