[UE5] Slate

윤정민·2024년 3월 23일
0

Unreal Engine

목록 보기
33/34

1. Slate란


언리얼 엔진에서 제공되는 커스텀 가능한 UI 프레임워크다. slate는 서술형 문법을 사용하여 프로그래머가 인디렉션 레이어를 추가하지 않고 쉽게 UI를 제작 가능한 기능을 제공한다. 또한 Composition을 통해 반복적으로 사용되는 요소들을 빠르게 배치할 수 있도록 구성되어 있다.

2. Widget과 Slate


언리얼에서 UI를 제작할 때 UMG를 사용해 제작한다. 그렇다면 Slate와 Widget은 뭐가 다른 것일까? 사실 Widget은 Slate의 껍데기(Container)일 뿐이다. 실질적으로 화면에 보여주기 위한 기능들은 Slate에 있고 Widget은 Slate를 제어하기 위한 데이터를 가지고 있을 뿐이다. 우리는 SetText()같은 함수들로 Widget의 데이터를 제어하고 있을 뿐이다.

3. 왜 역할을 분리했을까?


결국 Slate가 실질적으로 View의 역할을 하고있는데 Widget으로 왜 Warpping하고 있는 것일까? 이건 MVC 구조를 이해하고 있다면 쉽게 이해할 수 있다.

Slate는 보여줄 데이터를 직접 가지고 있지 않고 필요할 때 마다 딜리게이트를 브로드캐스트해 값을 가져온다. (TreeView에서 Getchildren을 사용하면 이해가 바로 된다.) 따라서 Slate는 화면에 보여주는 역할(View), 데이터를 전달하는 역할(Controller)을 수행하고 Widget은 데이터를 가지고 있는 역할(Model)을 수행한다.

그렇기 때문에 Slate는 피드백 루프 방식이 아닌 폴링을 통해 화면에 그려준다.

세줄 요약

  • 언리얼에서 UI는 Slate로 컴포지션화 하여 빠르게 만들 수 있다.
  • Widget은 Slate를 가지고 있어 실질적으로 화면에 보여지는 것은 Slate다.
  • Slate는 데이터를 가지고 있지 않고 필요할 때 마다 딜리게이트로 Widget의 데이터를 가져온다.

Scrolling한 위젯들을 가상화시키는게 언리얼이 추구하는 방향성 같은데 관련해서 ListView(Tile, Tree도 있음)이 위젯을 풀링하는 방식도 궁금하다. 이건 대충 이해하긴 했는데 다음에 포스팅하면서 정리하겠다.

profile
그냥 하자

0개의 댓글