SetVisibility(ESlateVisibility:: ~ )

Subin·2024년 9월 9일
0

STUDY | UnrealEngine5

목록 보기
7/7

Visible과 Hidden만 알고 있었는데, HitTestInvisible(Not Hit-Testable), Not Hit-Testable(self), Collapsed 가 있어서 찾아보았다.


SetVisibility에서 "Not Hit-Testable"Unreal EngineUI 시스템에서 위젯(Widget)마우스 클릭이나 터치 입력 등의 히트 테스트(Hit Test)를 처리하지 않도록 설정하는 옵션을 의미한다. 즉, UI는 화면에 보이지만, 사용자가 상호작용할 수 없도록 만드는 것이다.

Unreal Engine에서 SetVisibility를 호출할 때, Visibility(가시성)에는 여러 상태가 있으며, 그 중 두 가지는 "Not Hit-Testable" 옵션을 포함한다.

1. SetVisibility의 옵션들

  1. Visible:

    • UI가 화면에 보이고, 마우스 및 터치 입력을 받는다.
    • Hit Testable 상태: 사용자가 UI를 클릭하거나 상호작용할 수 있다.
  2. Hidden:

    • UI가 화면에 보이지 않으며, 입력도 받지 않는다.
    • 히트 테스트 불가 상태이다.
  3. Collapsed:

    • UI가 화면에 보이지 않으며, 공간을 차지하지 않는다.
    • 이 상태에서는 입력도 받지 않는다.
    • Hidden과 달리 공간 자체가 사라져 레이아웃에서 공간을 차지하지 않는다.
  4. Hit Test Invisible (Not Hit-Testable):

    • UI가 화면에 보이지만, 사용자의 마우스나 터치 입력에 반응하지 않는다.
    • 이 상태에서는 히트 테스트를 하지 않기 때문에 해당 UI는 클릭하거나 상호작용할 수 없게 된다.
    • 다른 UI 요소가 위에 있거나 뒤에 있어도, 이 UI는 마우스나 터치 이벤트를 처리하지 않기 때문에 입력 이벤트는 다른 UI 요소로 전달된다.
  5. Self Hit Test Invisible:

    • UI가 화면에 보이고, 자신의 입력 이벤트는 무시하지만 하위 위젯(child widgets)은 여전히 입력을 처리할 수 있다.
    • 즉, 부모 위젯은 히트 테스트가 불가능하지만, 하위 위젯은 상호작용할 수 있다.

2. SetVisibility(EVisibility::HitTestInvisible)의 사용 예

Not Hit-Testable 옵션을 사용하는 경우는 주로 UI가 보이지만, 사용자가 직접 상호작용할 필요가 없을 때이다. 예를 들어:

  1. 장식용 UI:

    • UI가 단순히 화면에 보이기만 하고, 사용자가 클릭하거나 상호작용할 필요가 없을 때 사용한다.
    • 예: 화면 상단에 로고가 있지만 클릭할 수 없도록 하고 싶을 때.
  2. 투명한 UI 오버레이:

    • 특정 UI 레이어가 보이긴 하지만, 그 위에 있는 다른 UI와 상호작용을 막지 않도록 할 때 사용한다.
    • 예: 게임 화면에 오버레이를 표시하면서 그 아래의 UI와 상호작용할 수 있게 하려는 경우.
  3. 디버그 UI:

    • UI가 디버그 목적으로 표시되지만, 입력 이벤트를 처리하고 싶지 않은 경우.

// 위젯의 가시성을 Not Hit-Testable로 설정 (보이지만 상호작용 불가)
MyWidget->SetVisibility(ESlateVisibility::HitTestInvisible);

이렇게 설정하면 위젯은 화면에 보이지만, 마우스 클릭이나 터치 이벤트가 위젯에 전달되지 않는다. 대신, 이 입력 이벤트는 다른 위젯으로 전달된다.

profile
성장하며 꿈꾸는 삶을 살아가고 있는 대학생입니다😊

0개의 댓글