[UE4] 위젯의 레이어 관리

2367 단어 위 4UnrealEngine4
대상 Ver: UE4.25.0

1. 레이어와 ZOrder



Widget은 기본적으로 나중에 추가된 것을 우선해서 표시(겹치고 있는 경우는 우선해) 표시합니다. 여러 Widget이 동일한 계층에 있는 경우는 이 규칙이 적용되지만, Canvas Panel을 이용하는 것으로 묘화 순서에 관계없이 지정의 Widget를 우선해 표시하는 것도 가능합니다. 이것은 Widget끼리의 깊이 정보를 관리하기 위한 값(ZOrder)에 의해 제어할 수도 있습니다.

[API 문서] UCanvasPanelSlot
[API 문서] UGameViewportClient

Widget을 표시할 때는 AddToViewport()를 이용하도록 Viewport가 결국 이러한 Widget을 등록하고 관리합니다. 먼저 추가 ® 다른 시간에 UGameViewportClient::AddViewportWidgetContent를 실행하여 Tree에 등록합니다. 위젯을 삭제할 때 RemoveFromParent()를 사용하여 UGameViewportClient::RemoveViewportWidgetContent에서 제거됩니다. 이러한 위젯은 최종적으로 레벨의 천이시 등에 UGameViewportClient::RemoveAllViewportWidgets 로부터 모아서 파기됩니다.

아래는 같은 레이어에 있는 Widget과 ZORder의 관련성을 나타낸 그림입니다.

1UserWidget 내에서 Overlay의 ZOrder의 차이 : 왼쪽은 모두 0이므로 나중에 추가한 Widget이 위로 올 것이다.


UserWidget끼리의 ZOrder의 차이 : 왼쪽은 모두 0이므로 나중에 추가한 User Widget이 위로 올 것이다.


2. ZOrder 지정 및 변경



ZOrder를 변경하는 것으로 간단하게 묘화 순서를 변경하는 것이 가능합니다. 다만, 이것을 지정/변경하려면 다음과 같은 제약이 있습니다.

· User Widget
동적 변경은 제공하지 않습니다. AddToViewport로 생성시 또는 Designer상에서의 지정만입니다.
· Widget
동적 변경은 Canvas Slot에서 SetZOrder에서 가능하며 정적 변경은 Designer에서 지정이 가능합니다.



동적으로 User Widget을 변경하는 방법에 대해서는 기본값은 아니지만 아래 블로그 방법이 도움이 될 것이라고 생각합니다.
htps : //Sun g Funpa rk. 기주 b. 이오 / 응아 l / 30 /

좋은 웹페이지 즐겨찾기