UnityUI 도구 — MRTK3

UnityUI는 혼합 현실 개발자가 3D 사용자 인터페이스를 만들 때 생각하는 첫 번째 도구가 아닐 수 있습니다. 그러나 몇 가지 도우미 구성 요소와 유틸리티를 사용하면 UnityUI에서 아름답고 유연한 3D 사용자 인터페이스를 만들 수 있습니다.

Unity UI 예제 단추 및 슬라이더

UnityUI를 작성할 때 성능 병목 현상을 만들기 쉽습니다. 복잡한 UnityUI 레이아웃을 만들기 전에 이 자습서를 읽는 것이 좋습니다.

예제

UnityUI용으로 빌드된 다양한 구성 요소의 데모는 UnityUI 샘플을 참조하세요.

UI 동작 구성 요소

아래 구성 요소는 UI 렌더링에 도움이 되지만 그래픽 구성 요소에는 표시되지 않습니다.

ScaleMeshEffect

UnityUI 구성 요소에서 unity_ObjectToWorld 행렬(URP의 UNITY_MATRIX_M)은 그래픽 구성 요소가 있는 로컬 변환의 변환 행렬이 아니라 부모 캔버스의 변환 행렬입니다. 그래픽 도구 내의 많은 셰이더 효과를 사용하려면 개체 크기를 알아야 합니다. 이 문제를 해결하기 위해 ScaleMeshEffect.cs는 UI 메시 생성 중에 스케일링 정보를 UV 채널 특성에 저장합니다.

그래픽 도구 내의 캔버스 또는 CanvasRenderer는 필요한 경우 ScaleMeshEffect.cs를 추가하라는 메시지를 표시합니다.

RectMask2DFast

UnityUI에는 RectMask2D라는 기본 제공 구성 요소가 있습니다. 일반적으로 이 구성 요소는 더 큰 영역의 작은 부분을 마스킹하는 데 사용됩니다. 많은 개체를 마스킹할 때 이 프로세스는 CPU에서 개체를 선별하는 데 상당한 시간이 걸릴 수 있습니다. 이 병목 현상을 방지하기 위해 그래픽 도구에는 RectMask2DFast 구성 요소가 포함되어 있습니다.

RectMask2DFastRectMask2D와 동일한 방식으로 작동하며 권장되는 대체품입니다. RectMask2DFast에서 개체를 추가하거나 제거한 후 마스킹이 업데이트되지 않는 문제가 발생하면 아래와 같이 수동으로 업데이트를 호출해야 할 수 있습니다.

myRectMask2DFast.ForceClip = true;

모든 그래픽 도구/캔버스/ 셰이더와 그래픽 도구/표준 캔버스 셰이더는 RectMask2D, RectMask2DFastRoundedRectMask2D를 지원합니다.

참고

그래픽 도구/캔버스/ 셰이더 및 그래픽 도구/표준 캔버스 셰이더는 RectMask2D 또는 RectMask2DFast.에서 부드러움 속성을 지원하지 않습니다.

RoundedRectMask2D

RoundedRectMask2DRectMask2DFast에서 파생되며 유사하게 작동합니다. 유일한 차이점은 둥근 모서리에 대한 모서리 반경 값이 RoundedRectMask2D에 포함된다는 것입니다. 이 반경은 모든 모서리 또는 각 모서리에 대해 개별적으로 선택할 수 있습니다.

두 개의 이미지가 있는 RoundedRectMask2D 예제

참고

재료 인스턴싱은 사용자가 제어해야 합니다. 즉, 공유 재료는 RoundedRectMask2D에 의해 영향을 받을 수 있습니다.

UI 그래픽 구성 요소

아래의 그래픽 구성 요소는 캔버스에 3D 차원을 추가하는 데 도움이 됩니다.

CanvasElementRoundedRect

이 구성 요소는 절차적으로 3D 둥근 사각형 메시를 생성한 다음 캔버스의 정점 스트림에 할당합니다. 일반적으로 이 구성 요소는 그래픽 도구/캔버스/백 플레이트 셰이더를 사용하여 백 플레이트 메시를 생성하는 데 사용됩니다.

CanvasElementRoundedRect 예제 백플레이트

CanvasElementBeveledRect

CanvasElementRoundedRect와 마찬가지로 이 구성 요소는 3D 둥근 직사각형을 절차적으로 생성하지만 가장자리가 기울어져 있습니다. 일반적으로 이 구성 요소는 그래픽 도구/캔버스/기울어짐 셰이더를 사용하여 백 플레이트 메시를 생성하는 데 사용됩니다.

CanvasElementBeveledRect 예제

CanvasElementMesh

Unity의 MeshRenderer 구성 요소는 UnityUI 내에서 3D 메시를 표시하는 데 사용할 수 있지만 UnityUI가 제공하는 일부 레이아웃 기능이 적용되지는 않습니다. 이러한 레이아웃 문제를 해결하기 위해 CanvasElementMesh 구성 요소가 있습니다.

CanvasElementMesh 구성 요소는 입력 메시를 가져와 Graphic 구성 요소로 변환합니다.

로켓을 사용한 CanvasElementMesh 예제

중요

스크립트 내에서 정점을 읽을 수 있도록 입력 메시에 Read/Write 속성이 사용하도록 설정되어 있어야 합니다.

애니메이션

UnityUI 재료 속성에 애니메이션 효과를 주기 위해 CanvasMaterialAnimator... 클래스를 사용할 수 있습니다. 자세한 내용은 애니메이션 설명서를 참조하세요.

UI 레이아웃을 돕기 위해 몇 가지 메뉴 항목이 그래픽 도구 내에 있습니다.

앵커에서 모서리로, 모서리에서 앵커로

창 > 그래픽 도구 > 캔버스 앵커 > 앵커에서 모서리로창 > 그래픽 도구 > 캔버스 앵커 > 모서리에서 앵커로를 사용하여 고정 시스템의 레이아웃 표현과 RectTransform 고유의 앵커(제약 조건) 시스템 간에 앞뒤로 이동할 수 있습니다. 이는 반응형 레이아웃과 고정 스케일 레이아웃 사이를 이동할 때 유용할 수 있습니다.

참고 항목