https://docs.unrealengine.com/5.3/ko/widget-components-in-unreal-engine/
Level에서 Actor를 배치하여 상호작용 가능한 Widget을 추가
https://docs.unrealengine.com/5.3/ko/umg-widget-interaction-components-in-unreal-engine/
Widget Component와 Interaction할 수 있는 Component
Pawn, Character같은 곳에 부착
https://docs.unrealengine.com/5.3/ko/umg-slots-in-unreal-engine/
Widget을 묶어주는 역할(Grid Slot, Canvas Slot 등)
Slate에서는 Slot을 만든 후 Control 추가
UMG에서는 Panel Widget 아래에 배치 시 Slot 자동 추가
https://docs.unrealengine.com/5.3/ko/creating-widgets-in-unreal-engine/
Widget Blueprint를 만든 후 게임에 배치하여 표시하기 위해서는 'Create Widget', 'Add To View Port' 노드 작업 필요
Widget 제거 시 'Remove From Parent' 노드
Widget간의 계층구조를 만들고자 할 경우 'Add Child'를 통해 부착
자식 제거 시 'Remove Child' 호출
Blueprint에서 'Create Widget'과 'Constrcut Object From Class'의 형태가 같은것을 보고 UE Code에서 확인해보니 내부적으로 'UUserWidget::CreateInstanceInternal()'에서 NewObject()를 통해 동일한 방식으로 생성하는 것을 확인
Game, UI 중 어느 부분이 Player의 Input을 받을지 결정할 수 있음
플랫폼에 구애받지 않고 UI를 그릴 수 있는 프레임워크
주로 Editor Modify에 쓰이는 듯
UMG도 내부적으로는 Slate로 구성됨
https://docs.unrealengine.com/5.3/ko/using-the-slate-clipping-system-in-unreal-engine/
4.17 버전에서 Slate의 Clipping System에 큰 변화가 생겨 그 하위 버전과는 호환하기 위해서는 추가 작업이 필요
Custom Clipping을 설명하는 부분을 보면 Unity의 Imgui와 비슷한 방식인거 같은데..
Widget Reflector를 통해 Editor에서 선택된 Widget의 Clipping State 확인 가능
https://docs.unrealengine.com/5.3/ko/using-slate-in-game-in-unreal-engine/
Slate는 독립 Module이므로 사용시 Dependency 추가를 해줘야 한다
// GEingne으로 Game에 Slate를 추가하는걸 보면 GEditor를 통해서 Editor에 Slate를 추가하는것도 가능할 듯?
GEngine->GameViewport->AddViewportWidgetContent(
SNew(MyWidgetPtr.ToSharedRef())
);
https://docs.unrealengine.com/5.3/ko/slate-ui-widget-examples-for-unreal-engine/
예제로 보여주는 코드들이 신기해서 찾아보니까 cpp코드가 맞고 operator 재정의를 통해 사용하는 방식
Slate UI에 대한 공식 문서는 이게 전부인 듯?
https://docs.unrealengine.com/5.3/ko/umg-rich-text-blocks-in-unreal-engine/
미리 정의해둔 Style을 이용해 RichText에 쉽게 지정해서 표현하는 방식
Markup을 이용해 RichText 표시
URichTextBlockDecorator와 FRichTextDecorator를 재정의하면 UE에서 지원하는 Image, Text 이외에도 Custom Decorator를 만들 수 있는거 같은데 그러면 특정 글자만 반짝이는 듯한 추가 효과같은것도 넣을 수 있는건가?