UMG의 클리핑 시스템은 슬레이트 클리핑 시스템을 프레임워크로 사용하여 텍스트, 이미지 및 콘텐츠가 위젯과 에디터 나머지 부분에 표시되는 방식을 제어합니다. 클리핑 은 렌더링된 오브젝트(그래픽 및 텍스트)를 바운딩 박스를 사용하여 한 영역으로 제한함으로써 그 바깥쪽에 있는 항목이 보이지 않게 합니다. 클리핑 시스템은 이제 축으로 정렬됩니다. 이는 곧 모든 회전을 클리핑할 수 있다는 의미이며, 이전에는 트랜스폼이 처리되는 방식 때문에 이렇게 하지 못했습니다.

이 예시에서는 표시되는 텍스트에 대해 각 버튼이 부모로 지정됩니다. 또한 이 예시는 버튼과 텍스트 중 어떤 것이 클리핑을 수행하는지 보여줍니다.
- 왼쪽 - 버튼 또는 텍스트에 클리핑이 활성화되어 있지 않습니다.
- 중앙 - 텍스트에 클리핑이 활성화되어 있습니다.
- 오른쪽 - 버튼에 클리핑이 활성화되어 있습니다.
파란색 윤곽선으로 표시된 캔버스(Canvas) 패널 또는 클리핑 영역은 게임 화면을 나타내며, 게임에서 이 영역 바깥쪽에 있는 항목은 모두 클리핑되거나 그려지지 않습니다.
UMG 디자이너 그래프에서 '캔버스' 패널(파란색)은 게임 화면의 클리핑 영역을 나타냅니다. 이미지를 클릭하면 전체 크기로 표시됩니다.
언리얼 엔진 4.16 이전 버전에서는 위젯 클리핑이 레이아웃 공간을 사용하여 처리되며, '캔버스' 패널 외부에 있는 항목은 모두 렌더링되지 않습니다. 위젯의 바운딩 박스 일부분이 '캔버스' 패널 바깥쪽에 있는 경우 해당 부분은 렌더링되지 않으며, 위젯이 회전하더라도 바운딩 박스는 잘린 그래픽이나 텍스트 부분을 남기지 않습니다. 이는 '캔버스' 패널 안쪽에 있다고 하더라도 마찬가지입니다.
다음 예시를 살펴보면 변경 이전과 이후가 어떻게 다른지 확인할 수 있습니다.


이미지 위젯(왼쪽)이 '캔버스' 패널의 가장자리에 배치되어 바운딩 박스의 일부분이 바깥쪽에 있습니다. 이제 클리핑 시스템이 레이아웃 공간을 사용하는 대신 축으로 정렬되므로 클리핑에서 아티팩트 및 여러 문제가 해결됩니다(오른쪽).
클리핑 프로퍼티
이제 클리핑(Clipping) 의 UMG 디테일(Details) 패널에서 선택된 위젯을 기반으로 클리핑이 처리되는 방식을 변경할 수 있습니다.

프로퍼티 | 설명 |
---|---|
Inherit | 이 위젯은 자손을 클리핑하지 않고 부모 위젯에서 전달된 클리핑/컬링을 따릅니다. |
Clip to Bounds | 이 위젯은 콘텐츠를 위젯의 바운드에 클리핑합니다. 이러한 바운드는 이전 클리핑 영역과 교차됩니다. |
Clip to Bounds - Without Intersecting | 이 위젯은 바운드에 클리핑합니다. 기존 클리핑 지오메트리와 교차하지 않으며, 새 클리핑 상태를 푸시합니다. 따라서 클리핑하는 계층구조의 바운드 외부에 렌더링하는 것이 허용됩니다. 이 경우 Clip to Bounds - Always 로 설정된 클리핑 영역은 무시할 수 없습니다. |
Clip to Bounds - Always | 이 위젯은 바운드에 클리핑합니다. 이러한 바운드는 이전 클리핑 영역과 교차됩니다. 이 클리핑 영역은 무시할 수 없으며 항상 자손을 클리핑합니다. 애니메이션이나 다른 이펙트가 이 영역을 침범하면 안 되는 UI가 있는 경우 유용합니다. |
On Demand | 이 위젯은 '원하는 크기(Desired Size)'가 위젯에 지정된 지오메트리보다 더 클 때 바운드에 클리핑합니다. 이 경우 Clip to Bounds 와 같이 작동합니다. 이 모드는 기본적으로 텍스트 용으로 추가된 것입니다. 텍스트는 해당 텍스트의 길이를 지원하지 않는 수준으로 크기가 조절된 컨테이너에 배치되는 경우가 흔합니다. 따라서 텍스트를 포함할 수 있는 컨테이너를 [YES]로 태그 지정하지 않고(이 경우 배치 처리가 거의 불가능함) 필요한 경우 클리핑을 동적으로 조정할 수 있도록 이 모드가 추가되었습니다. 모두가 On Demand 로 설정되지 않는 이유는 모든 패널이 렌더링하도록 계획된 '원하는 크기'를 반환하는 것은 아니기 때문입니다. |
추가 고려 사항
- 텍스트 길이를 제어할 수 없어서 클리핑해야 하는 경우를 제외하면 대부분의 경우 클리핑 메서드는 조정할 필요가 없습니다. 이에 대한 예시로는 스크롤 박스와 편집 가능 텍스트 위젯을 들 수 있으며, 두 경우 모두 'Inherit' 대신 Clip to Bounds 로 설정됩니다.
- 다른 클리핑 공간의 엘리먼트는 함께 배치 처리할 수 없으므로 클리핑 시 퍼포먼스 비용이 발생합니다. 따라서 패널에서 콘텐츠가 바운드 외부로 표시되지 않게 해야 하는 경우가 아니라면 클리핑을 활성화하지 않는 것이 좋습니다.