Blog

ENGINEERING NOTE

[Unreal Engine] Common Widget Functionality

각 위젯은 고유한 기능과 용도를 가지지만, 모든 위젯에 공통적으로 적용되는 기능도 있습니다. 대표적으로 다음과 같은 항목들이 있습니다:접근성(Accessibility): 각 위젯은 프로젝트의 기본 접근성 설정을 따르며, 위젯별로 개별 설정을 오버라이드할 수 있습니다.

Unreal Engine

Common Widget Functionality

각 위젯은 고유한 기능과 용도를 가지지만, 모든 위젯에 공통적으로 적용되는 기능도 있습니다. 대표적으로 다음과 같은 항목들이 있습니다:

  • 접근성(Accessibility): 각 위젯은 프로젝트의 기본 접근성 설정을 따르며, 위젯별로 개별 설정을 오버라이드할 수 있습니다. 이 설정은 자식 위젯에도 영향을 줄 수 있습니다.

접근성에 대한 자세한 내용은 본 문서의 범위를 벗어나지만, Epic에서 승인한 공식 강좌를 참고하세요: Epic Approved Course for Introduction to Accessible Design ![](/api/media/velog-2aa96b6e518526fb716a5de52b581521) - Override Accessible Defaults: 활성화 시, 이 위젯의 기본 접근성 동작과 텍스트를 오버라이드합니다. - Can Children be Accessible: 자식 위젯도 별도의 접근성 위젯으로 인식할지 여부. - Accessible Behavior: 이 위젯의 접근성 여부 및 설명 방식을 설정합니다. "Custom" 선택 시 직접 접근성 텍스트를 입력할 수 있습니다. ![](/api/media/velog-af67cea06206a95b4d3bcdcc38930dc4)

- Accessible Summary Behavior: 부모 위젯의 요약 설명에 이 위젯이 어떻게 설명될지 설정합니다. "Custom" 선택 시 직접 접근성 텍스트를 입력할 수 있습니다. ![](/api/media/velog-da80aaa270f90418deac322e4df6518a)

  • 툴팁 텍스트(Tool Tip Text): 마우스 오버 시 표시되는 기본 또는 커스텀 툴팁 위젯을 지정할 수 있습니다.
  • Is Enabled: 위젯이 활성/비활성 상태인지, 사용자 상호작용이 가능한지 여부를 설정합니다.
  • Visibility: 위젯의 렌더링 및 상호작용 가능 여부를 결정합니다.

- Visible: 렌더링 및 상호작용 가능 - Collapsed: 렌더링/상호작용 불가, 레이아웃 공간도 차지하지 않음 - Hidden: 렌더링/상호작용 불가, 레이아웃 공간은 차지함 - Not Hit-Testable/Hit Test Invisible(Self & All Children): 렌더링은 되지만 상호작용 불가, 자식도 상호작용 불가 - Not Hit-Testable/Hit Test Invisible(Self Only): 렌더링은 되지만 본인만 상호작용 불가, 자식은 상호작용 가능 ![](/api/media/velog-5ae2cc9eb05e7c1e06436a8ac99ecd6f)

  • Render Opacity: 위젯의 렌더 투명도(0=투명, 1=완전 불투명)로, 자식 위젯에도 영향을 미칩니다.
  • Render Transform: 위젯의 렌더 트랜스폼(변환)으로, 충돌 영역에는 영향을 주지만 레이아웃/페인트 정보는 변경하지 않습니다.

- Translation: X/Y 위치 오프셋 - Scale: X/Y 스케일 - Shear: X/Y 쉬어(기울기) - Angle: 회전(2D 공간이므로 1축만 필요, -180~180도) - Pivot: 변환 적용 기준점(0.5=중앙, 0=좌/상, 1=우/하) ![](/api/media/velog-04016a626cb22c7f135f0d73461288a9)

  • Is Volatile: true로 설정 시, 위젯이 항상 레이아웃/지오메트리 갱신 대상이 되어 캐싱되지 않습니다(기본값: false).
  • Clipping: 위젯의 레이아웃/지오메트리 클리핑 방식을 지정합니다. 클리핑이 많을수록 성능에 영향이 있을 수 있습니다.

- Inherit: 부모의 클리핑 영역을 상속, 자식은 클리핑하지 않음 ![](/api/media/velog-82e539dcaec51a70d44828ee0ab98eda)

- Clip to Bounds: 자신의 경계로 클리핑, 상위 클리핑 영역과 교차 ![](/api/media/velog-07733b590a26e7f09131acfb150ed5de)

- Clip to Bounds - Without Intersecting(Advanced): 자신의 경계로만 클리핑, 상위 클리핑 영역과 교차하지 않음 ![](/api/media/velog-55334f259e3b3951479d0c4fe50bf76c)

- Clip to Bounds - Always(Advanced): 항상 자신의 경계로 클리핑, 상위 클리핑 영역과 반드시 교차(무시 불가) ![](/api/media/velog-0e89ad47708cba9ec36947be19513749)

- On Demand(Advanced): Desired Size가 할당된 영역보다 클 때만 클리핑, 필요 시 "Always"와 동일하게 동작 ![](/api/media/velog-12ca94849a6f38fd2c011e6c179b632f)

  • Navigation: Unreal의 포커싱 프레임워크에서 방향키 등으로 이동할 때의 내비게이션 동작을 지정합니다. 블루프린트/C++ 모두에서 설정 가능하며, 자세한 흐름은 Unreal's Focusing System 참고

- Escape: 해당 방향으로 벗어나면 다른 위젯으로 이동하거나 경계를 탈출 ![](/api/media/velog-a9c6a7ea63a195cfcb97292a8028a20c) - Stop: 해당 방향으로 이동 시 내비게이션 중단 ![](/api/media/velog-37828ee47236b51413bd37091fe8ea81)

- Wrap: 반대편 경계로 이동(예: 아래→맨 위) ![](/api/media/velog-d15c5c8a00e58fbba52273c1932bfdeb)

- Explicit: 특정 위젯으로만 이동 ![](/api/media/velog-63e025a2d941110f2874c866bf43f593)

- Custom: 함수로 내비게이션 대상 위젯을 동적으로 지정(해당 방향으로 "FROM" 이동 시) ![](/api/media/velog-78f5e5e317c528b0985bd3ececcb7276)

- Custom Boundary: 함수로 내비게이션 대상 위젯을 동적으로 지정(해당 방향으로 "TO" 이동 시) ![](/api/media/velog-5b201b83bcac275d8cefcf83bd9c167f)

  • Flow Direction: 현지화(로컬라이제이션) 지원을 위한 레이아웃 방향 설정(좌→우/우→좌 등). 일부 위젯만 사용하지만, 모든 위젯에 노출되어 있습니다.

- Inherit: 부모 위젯의 방향을 상속 - Culture: 현재 문화권(언어)의 레이아웃 방향을 사용 - Left to Right: 좌→우 레이아웃 강제 - Right to Left: 우→좌 레이아웃 강제 ![](/api/media/velog-3fda6d4c854a7729dcca2485491e3e91)