이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.26 15:19
Rect Transform은 Unity UI 시스템에서 UI 요소의 위치, 크기, 회전, 피벗, 앵커를 제어하는 핵심 컴포넌트이다. 이 컴포넌트는 일반 3D 객체에 사용되는 Transform 컴포넌트를 상속받았으며, 주로 캔버스 내부의 2D UI 요소를 배치하고 레이아웃을 구성하는 데 사용된다.
Rect Transform은 Unity 4.6 버전에서 새로운 uGUI 시스템이 도입되면서 함께 등장했다. 기존의 GUI 시스템을 대체하는 이 시스템의 근간이 되어, 직관적인 에디터 인터페이스와 강력한 레이아웃 기능을 제공한다. 이를 통해 개발자는 다양한 화면 해상도와 화면 비율에 대응하는 반응형 UI를 설계할 수 있다.
Rect Transform의 핵심 기능은 앵커와 피벗 시스템에 있다. 앵커는 UI 요소가 부모 사각형이나 화면에 상대적으로 어떻게 위치하고 늘어날지를 정의하며, 피벗은 요소 자신의 회전과 크기 조절의 기준점을 설정한다. 이러한 특성 덕분에 버튼, 패널, 텍스트와 같은 모든 UI 요소는 Rect Transform 컴포넌트를 통해 정밀하게 제어된다.
Rect Transform의 앵커는 UI 요소가 부모 Rect Transform이나 캔버스의 특정 지점에 어떻게 고정되는지를 정의한다. 앵커는 네 개의 삼각형 핸들로 시각적으로 표현되며, 이 핸들이 모이는 지점이 앵커의 기준점이 된다. 이 설정은 UI 요소의 위치와 크기가 부모 영역의 변화에 따라 어떻게 반응할지를 결정하는 핵심 메커니즘이다.
앵커의 주요 역할은 다양한 화면 해상도와 종횡비에 UI가 유연하게 적응하도록 하는 것이다. 예를 들어, 앵커를 부모 영역의 중앙에 설정하면 UI 요소는 항상 화면 중앙에 위치하게 되고, 앵커를 부모의 오른쪽 상단 모서리에 고정하면 요소는 항상 그 모서리에 붙어 있게 된다. 이는 반응형 디자인을 구현하는 데 필수적이다.
앵커는 위치뿐만 아니라 크기 조절에도 영향을 미친다. 앵커 핸들이 서로 분리되어 있을 경우, UI 요소의 크기는 부모 영역의 특정 비율에 맞춰 자동으로 늘어나거나 줄어들 수 있다. 이 방식을 사용하면 패널이나 버튼 같은 UI 요소가 화면 크기 변화에 따라 비율을 유지하며 크기가 조정되는 스트레치 모드를 쉽게 구현할 수 있다.
Unity 에디터의 인스펙터 창에서는 미리 정의된 앵커 프리셋을 통해 일반적인 앵커 설정을 빠르게 적용할 수 있다. 또한, 앵커 핸들을 직접 드래그하여 정밀하게 조정하거나, 스크립트를 통해 런타임에 동적으로 앵커 값을 변경할 수도 있다. 올바른 앵커 설정은 복잡한 UI 레이아웃을 구성하고 유지 관리하는 데 큰 도움을 준다.
피벗은 Rect Transform 컴포넌트의 핵심 속성 중 하나로, UI 요소의 회전과 크기 조절의 기준점이 되는 정규화된 좌표를 의미한다. 피벗은 UI 요소의 로컬 좌표계 내에서 (0,0)부터 (1,1) 사이의 값을 가지며, (0,0)은 요소의 왼쪽 아래 모서리, (1,1)은 오른쪽 위 모서리를 가리킨다. 이 점을 중심으로 요소가 회전하거나 크기가 변환된다.
가장 일반적인 피벗 설정은 중심점인 (0.5, 0.5)이다. 이 경우 UI 요소는 자신의 정중앙을 기준으로 회전하게 된다. 그러나 피벗을 요소의 모서리나 특정 지점으로 변경하면, 회전이나 스케일링이 그 지점을 중심으로 발생한다. 예를 들어, 시계 바늘처럼 한쪽 끝을 고정하고 회전시키는 UI를 만들고자 할 때는 피벗을 (0.5, 0)과 같이 요소의 하단 중앙으로 설정할 수 있다.
피벗의 위치는 인스펙터 창에서 시각적으로 조정하거나, 수치를 직접 입력하여 변경할 수 있다. 또한 C# 스크립트를 통해 RectTransform.pivot 프로퍼티에 Vector2 값을 할당하여 동적으로 제어하는 것도 가능하다. 피벗은 요소의 앵커나 위치와는 독립적으로 작동하지만, 최종 화면상의 배치와 변형에 함께 영향을 미친다.
정확한 피벗 설정은 복잡한 UI 애니메이션을 구현하거나, 특정 지점을 기준으로 요소를 확대/축소할 때 필수적이다. 잘못된 피벗 설정은 의도하지 않은 회전이나 위치 이동을 초래할 수 있으므로, Unity Editor의 씬 뷰에서 피벗 핸들을 활성화하여 시각적으로 확인하며 작업하는 것이 좋다.
Rect Transform의 위치(Position) 속성은 UI 요소가 캔버스(Canvas) 공간 내에서 어디에 배치되는지를 결정한다. 위치 값은 앵커(Anchors)와 피벗(Pivot)의 설정에 따라 해석되는 기준 좌표계를 기반으로 한다. 일반적으로 위치는 Rect Transform의 피벗 지점이 앵커로 정의된 기준점으로부터 얼마나 떨어져 있는지를 나타낸다.
위치는 인스펙터 창에서 X, Y, Z 축의 값을 직접 입력하여 설정할 수 있으며, Unity Editor의 씬 뷰에서 UI 요소를 드래그하여 시각적으로 조정하는 것도 가능하다. Z 값은 주로 UI 요소의 정렬 순서(렌더링 순서)에 영향을 미치며, 2D UI에서는 일반적으로 0으로 유지된다. 위치 값의 단위는 픽셀을 기본으로 하지만, 앵커 설정과 부모 Rect Transform의 크기에 따라 상대적인 비율로 동작할 수도 있다.
Rect Transform 컴포넌트에서 크기(Size)는 UI 요소의 너비와 높이를 결정하는 핵심 속성이다. 이 크기 값은 픽셀 단위로 정의되며, 앵커 설정과 부모 객체의 크기에 따라 상대적 또는 절대적인 방식으로 동작할 수 있다. 인스펙터에서는 Width와 Height 필드로 직접 수치를 입력하여 조절할 수 있으며, 씬 뷰에서 UI 요소의 모서리를 드래그하여 시각적으로 변경하는 것도 가능하다.
크기 속성은 앵커와 밀접한 관계를 가진다. 예를 들어, 앵커가 부모 캔버스나 다른 UI 요소의 모서리에 고정되어 있으면, 크기 변경이 앵커 지점을 기준으로 이루어진다. 반면, 스트레치 모드로 설정된 앵커를 사용하면, 크기는 부모 영역의 비율에 따라 자동으로 조정되어 다양한 화면 해상도에 대응하는 반응형 디자인을 구현하는 데 기여한다.
스크립트를 통한 동적 제어도 중요하다. RectTransform.rect.width나 RectTransform.sizeDelta 같은 프로퍼티를 사용하면 게임 실행 중에 UI 요소의 크기를 프로그래밍 방식으로 변경할 수 있다. 이는 데이터에 따른 동적 레이아웃 구성이나 애니메이션 효과를 적용할 때 필수적이다.
크기 설정 시 주의할 점은, Transform 컴포넌트의 Scale 값과 혼동하지 않는 것이다. Rect Transform의 Size는 UI 요소의 실제 차원을 변경하는 반면, Scale은 렌더링되는 비주얼의 배율을 조절한다. 따라서 UI의 레이아웃과 정확한 배치를 위해서는 Scale보다는 Size 속성을 우선적으로 사용하는 것이 권장된다.
Rect Transform 컴포넌트의 회전 속성은 UI 요소가 2D 평면 상에서 얼마나 기울어져 있는지를 결정한다. 이는 3D 공간에서의 Transform 컴포넌트의 회전과 유사하지만, 주로 캔버스(Canvas)의 렌더링 평면을 기준으로 Z축을 중심으로 한 회전을 의미한다. 회전은 UI 요소의 시각적 방향을 변경할 때 사용되며, 시계 방향 또는 반시계 방향으로의 기울임을 만들어낸다.
회전 값은 인스펙터(Inspector) 창에서 오일러 각도(Euler Angles) 형태로 설정되며, 기본 단위는 도(Degree)이다. 피벗(Pivot) 점은 회전의 중심축 역할을 하므로, 피벗의 위치를 변경하면 회전하는 기준점이 달라져 전혀 다른 시각적 결과를 보여줄 수 있다. 예를 들어 피벗을 요소의 왼쪽 상단 모서리로 설정하면, 해당 모서리를 중심으로 요소가 회전하게 된다.
스크립트를 통해 회전을 제어할 때는 rotation 또는 localRotation 쿼터니언(Quaternion) 속성을 사용하거나, eulerAngles 속성을 통해 더 직관적인 각도로 접근할 수 있다. UI 요소에 애니메이션(Animation)을 적용하여 부드러운 회전 효과를 주거나, 사용자 상호작용에 따라 동적으로 방향을 전환하는 데 활용된다.
회전은 요소의 레이아웃과 앵커(Anchors) 기반 정렬에는 직접적인 영향을 주지 않는다. 즉, 요소가 회전하더라도 Rect Transform의 사각형 경계와 앵커 포인트는 원래의 위치와 크기를 유지하여 레이아웃 계산에 사용된다. 이로 인해 회전된 요소가 시각적으로는 겹쳐 보일 수 있지만, 실제 이벤트 시스템(Event System)에서의 히트 영역은 변형되지 않은 원본 사각형을 기준으로 할 수 있다는 점에 주의해야 한다.
스케일은 Rect Transform 컴포넌트를 통해 UI 요소의 크기를 상대적으로 조절하는 속성이다. 이는 Transform 컴포넌트의 스케일 개념을 상속받지만, 캔버스 시스템 내에서 작동한다는 점에서 차이가 있다. 스케일 값은 로컬 좌표계를 기준으로 하며, X, Y, Z 축에 대한 배율을 나타낸다. 기본값은 (1, 1, 1)로, 원래 크기를 의미한다. 이 값을 변경하면 UI 요소의 너비와 높이가 해당 배율에 따라 확대되거나 축소된다.
스케일은 UI 요소의 시각적 크기를 변경하는 데 사용되지만, Rect Transform의 크기 속성과는 구별된다. 크기 속성은 인스펙터에서 직접 픽셀 단위로 설정되는 반면, 스케일은 상대적인 배율을 적용한다. 예를 들어, 크기가 (100, 50)인 이미지에 스케일 (2, 2, 1)을 적용하면 화면상에서 200x100 픽셀 크기로 렌더링된다. 이는 애니메이션에서 점점 커지거나 작아지는 효과를 구현할 때 유용하게 활용된다.
Unity Editor의 인스펙터 창이나 스크립트를 통해 스케일 값을 조정할 수 있다. 스케일은 피벗 점을 기준으로 적용되며, 앵커와는 독립적으로 작동한다. 따라서 앵커가 부모 Rect Transform에 고정되어 레이아웃을 유지하는 상황에서도 스케일을 변경해 시각적 변형을 줄 수 있다. 다만, 과도한 스케일 조정은 해상도 대응이나 레티나 디스플레이에서 예상치 못한 픽셀화를 초래할 수 있으므로 주의가 필요하다.
일반적으로 UI 요소의 크기 조정은 Rect Transform의 크기 속성을 직접 조절하는 것이 권장되지만, 균일한 비율로의 확대·축소나 간단한 트윈 애니메이션 구현에는 스케일 속성이 효율적이다. 캔버스 스케일러와 같은 다른 비율 조정 시스템과 함께 사용될 때는 상호 작용을 고려해야 한다.
Unity UI 시스템에서 Rect Transform 컴포넌트는 인스펙터 창 상단에 위치한 앵커 프리셋 버튼을 통해 빠르게 일반적인 레이아웃을 설정할 수 있다. 이 프리셋들은 UI 요소의 앵커 위치와 부모 객체 Rect Transform과의 상대적인 위치 및 크기 관계를 미리 정의한 것이다.
주요 앵커 프리셋은 크게 네 가지 기본 형태로 구분된다. 첫째, '왼쪽 상단/중앙/하단', '가운데 상단/중앙/하단', '오른쪽 상단/중앙/하단'과 같이 앵커가 단일 지점에 고정된 형태다. 이 경우 UI 요소의 피벗 점이 해당 앵커 지점에 고정되어, 부모 캔버스나 컨테이너의 크기가 변해도 요소의 절대적 위치는 유지된다. 둘째, 앵커가 수직 또는 수평 방향으로 양쪽에 걸쳐 있는 '스트레치' 형태다. 예를 들어 '좌우로 늘리기' 프리셋은 요소의 왼쪽과 오른쪽 가장자리가 부모의 양쪽 가장자리에 각각 고정되어, 부모의 너비 변화에 따라 요소의 너비도 함께 늘어나거나 줄어드는 반응형 동작을 보인다.
셋째, 앵커가 네 모서리 모두에 걸쳐 있는 '네 방향 스트레치' 형태다. 이는 UI 요소가 부모 영역 전체를 채우도록 하거나, 부모 영역의 네 변으로부터 일정한 오프셋(거리)을 유지하며 크기를 조정하도록 설정할 때 사용된다. 마지막으로, 앵커가 부모 영역의 특정 비율 위치에 설정되는 형태도 있다. 이는 요소의 위치를 부모 크기의 퍼센트 비율로 정의하여, 다양한 화면 해상도에서 일관된 상대적 배치를 가능하게 한다.
이러한 프리셋들은 복잡한 수동 설정 없이도 반응형 UI 설계의 기초를 빠르게 구성할 수 있게 해준다. 개발자는 인스펙터에서 프리셋을 선택하거나, 앵커 프리뷰 창에서 앵커 점을 직접 드래그하여 세밀하게 조정할 수 있으며, 선택한 설정에 따라 Pos X, Pos Y, Width, Height 또는 Left, Top, Right, Bottom과 같은 관련 수치 필드가 자동으로 표시된다.
Rect Transform은 Unity의 UI 시스템에서 부모 객체와의 관계를 통해 자식 UI 요소의 배치와 크기를 정의한다. 부모 객체는 일반적으로 캔버스(Canvas)나 다른 UI 요소가 될 수 있으며, 자식 Rect Transform의 앵커(Anchors) 설정은 부모 Rect의 특정 지점에 고정되는 방식을 결정한다. 이 관계는 계층 구조를 형성하며, 부모의 크기나 위치가 변경될 때 자식 요소가 어떻게 반응할지를 앵커와 피벗(Pivot)을 통해 제어한다.
부모 객체의 Rect 공간 내에서 자식 요소의 위치와 크기는 상대적으로 계산된다. 예를 들어, 앵커가 부모의 네 모서리에 고정되어 있다면, 자식 요소의 크기는 부모 크기의 비율로 결정되어 반응형 UI 설계가 가능해진다. 반대로 앵커가 단일 지점에 고정되어 있다면, 자식 요소의 위치는 부모의 특정 지점으로부터의 절대적 오프셋으로 정의된다. 이는 다양한 화면 해상도와 화면 비율에 UI가 유연하게 적응하도록 하는 기반이 된다.
부모-자식 관계는 로컬 좌표계를 사용하여 관리된다. 자식 요소의 위치, 회전, 스케일 값은 부모의 좌표계를 기준으로 해석된다. 따라서 부모 객체를 이동하거나 변형시키면, 그에 종속된 모든 자식 요소들도 함께 변환된다. 이 특성은 복잡한 UI 패널이나 메뉴를 그룹으로 구성하고, 전체 그룹을 한 번에 제어할 때 유용하게 활용된다.
이러한 관계 설정은 Unity Editor의 씬 뷰나 인스펙터 창에서 시각적으로 조작할 수 있으며, C 샤프 스크립트를 통해 런타임 중에 동적으로 변경할 수도 있다. 올바른 부모-자식 관계와 앵커 설정은 UI의 레이아웃이 의도한 대로 작동하고, 다양한 디스플레이 환경에서 일관된 모습을 유지하는 데 필수적이다.
Rect Transform의 앵커와 피벗 설정은 다양한 화면 해상도와 화면 비율에 대응하는 반응형 UI 설계의 핵심이다. UI 요소가 부모 캔버스나 다른 Rect Transform을 기준으로 어떻게 위치하고 늘어날지 정의함으로써, 디바이스나 창 크기가 변경될 때도 의도한 레이아웃을 유지할 수 있다. 예를 들어, 화면 양쪽 가장자리에 고정된 버튼이나 화면 중앙에 유지되는 팝업 창을 구현하는 데 필수적이다.
앵커 프리셋을 활용하면 일반적인 레이아웃 패턴을 빠르게 적용할 수 있다. '왼쪽 아래'나 '가운데'와 같은 프리셋은 UI 요소를 부모 영역의 특정 모서리나 중심에 고정시킨다. 더욱 정교한 제어를 위해 앵커 점을 분리하여 각각 독립적으로 배치할 수 있으며, 이 경우 UI 요소의 크기가 부모 영역의 크기 변화에 비례하여 조정되는 스트레치 모드가 활성화된다. 이는 사이드바나 중앙 패널처럼 화면 크기에 따라 유동적으로 너비나 높이가 변해야 하는 요소를 만들 때 사용된다.
실제 설계 과정에서는 UI 요소의 용도와 원하는 반응 방식을 고려해 앵커와 피벗 전략을 수립한다. 네비게이션 바는 일반적으로 화면 상단에 앵커를 설정하고 좌우로 스트레치하도록 구성하며, 대화상자는 화면 중앙에 앵커와 피벗을 모두 배치하여 모든 해상도에서 정중앙에 위치하도록 한다. Unity 에디터의 씬 뷰에서 다양한 해상도 시뮬레이션 기능을 활용해 디바이스별 레이아웃을 미리 확인하고 조정하는 것이 좋다.
효과적인 반응형 UI를 위해서는 모든 요소가 절대적인 픽셀 좌표 대신 상대적인 앵커와 오프셋으로 배치되어야 한다. 또한, Canvas Scaler 컴포넌트와 함께 사용하여 해상도 변화에 따른 전체 UI의 스케일 모드(Constant Pixel Size, Scale With Screen Size, Constant Physical Size)를 정의하는 것이 일반적이다. 이를 통해 단일 레이아웃 설계로 다양한 스크린 크기에 일관된 사용자 경험을 제공할 수 있다.
Rect Transform은 Unity의 UI 시스템에서 캔버스 내부의 UI 요소를 배치하고 레이아웃을 구성하는 데 특화된 컴포넌트이다. 이는 기본 Transform 컴포넌트를 상속받지만, 2D 공간에서의 직사각형 영역을 다루는 데 필요한 추가 속성과 개념을 제공한다. 가장 큰 차이점은 앵커와 피벗 시스템을 통해 부모 Rect Transform이나 캔버스와의 상대적인 위치 및 크기 관계를 정의할 수 있다는 점이다. 이를 통해 다양한 화면 해상도와 화면 비율에 유연하게 대응하는 반응형 UI를 설계할 수 있다.
반면, 일반 Transform 컴포넌트는 주로 3D 또는 2D 월드 공간에서 게임 오브젝트의 위치, 회전, 크기를 절대적 또는 상대적으로 제어하는 데 사용된다. Transform은 월드 좌표계나 로컬 좌표계를 기준으로 하며, Rect Transform에서 핵심적인 앵커, 피벗, 직사각형 크기 같은 개념이 없다. 따라서 스프라이트나 3D 모델 같은 일반 게임 오브젝트를 배치할 때는 Transform을, UI 버튼이나 텍스트, 이미지 같은 UI 요소를 캔버스 안에 배치할 때는 Rect Transform을 사용해야 한다.
사용 차이점은 인스펙터 창에서도 명확히 드러난다. Rect Transform 컴포넌트는 앵커 프리셋 버튼, 피벗 위치 설정, 왼쪽/위쪽/오른쪽/아래쪽 위치 값 등 복잡한 레이아웃 컨트롤을 제공한다. 반면 Transform 컴포넌트는 Position, Rotation, Scale의 세 가지 기본 속성만을 보여준다. 또한 Rect Transform을 사용하는 오브젝트는 반드시 캔버스 오브젝트의 자식이어야 정상적으로 렌더링되는 반면, Transform을 사용하는 오브젝트는 그런 제약이 없다.
Rect Transform은 Unity UI 시스템에서 캔버스(Canvas) 내부의 UI 요소를 배치하고 레이아웃을 구성하는 데 사용되는 핵심 컴포넌트이다. 이 컴포넌트는 Unity 4.6 버전에서 새로운 uGUI 시스템이 도입되면서 함께 등장했으며, 기존의 Transform 컴포넌트를 상속받아 UI에 특화된 기능을 추가했다.
Rect Transform의 적용 대상은 주로 캔버스(Canvas)의 직계 자식 객체 또는 그 하위 계층에 있는 모든 UI 요소이다. 이는 버튼(Button), 이미지(Image), 텍스트(Text), 슬라이더(Slider)와 같은 기본 UI 구성 요소부터, 사용자가 정의한 패널(Panel)이나 레이아웃 그룹에 이르기까지 캔버스 공간 안에서 배치되는 모든 시각적 객체를 포함한다. 반면, 씬(Scene)에서 3D 공간에 배치되는 일반 3D 모델, 카메라(Camera), 라이트(Light) 등의 객체는 Transform 컴포넌트를 사용한다.
따라서 Unity 프로젝트에서 UI를 설계할 때는 객체의 용도에 따라 올바른 컴포넌트를 적용해야 한다. UI 툴킷을 사용하는 경우나 특수한 월드 스페이스 캔버스를 제외하면, 대부분의 사용자 인터페이스 작업은 캔버스 하위에 Rect Transform 컴포넌트가 부착된 객체들을 조합하여 이루어진다. 이 구분은 UI 요소의 위치와 크기가 해상도와 화면 비율에 따라 유연하게 반응하도록 하는 Rect Transform 시스템의 기반이 된다.
Rect Transform 컴포넌트의 속성은 Unity 에디터의 인스펙터 창을 통해 시각적으로 설정하고 조정할 수 있다. 인스펙터에는 앵커 프리셋 선택 버튼과 위치, 크기, 피벗, 앵커 값을 직접 입력할 수 있는 숫자 필드가 제공된다. 앵커 프리셋 버튼을 클릭하면 미리 정의된 9가지 레이아웃 모드 중 하나를 빠르게 선택할 수 있으며, 앵커 프리셋을 '사용자 지정'으로 설정하면 앵커 점을 자유롭게 드래그하여 정밀하게 배치할 수 있다.
인스펙터에서 Rect Transform을 조작할 때는 화면 상의 직사각형 핸들을 드래그하는 방식이 매우 직관적이다. 직사각형의 모서리나 변을 드래그하면 요소의 크기를 변경할 수 있고, 직사각형 내부를 드래그하면 위치를 이동시킬 수 있다. 또한 앵커 점을 나타내는 삼각형 모양의 핸들을 드래그하여 앵커의 위치를 부모 Rect Transform이나 캔버스 영역에 상대적으로 조정할 수 있다.
인스펙터 하단의 '정규화된 위치' 체크박스를 활성화하면 위치와 크기 값을 픽셀이 아닌 부모 영역에 대한 비율(0~1)로 표시하고 입력할 수 있다. 이는 반응형 UI 설계 시 특정 좌표가 아닌 상대적인 비율로 요소를 배치해야 할 때 유용하다. 모든 변경 사항은 실시간으로 씬 뷰에 반영되어 디자이너가 즉시 결과를 확인할 수 있다.
Rect Transform 컴포넌트는 Transform 컴포넌트와 달리 3차원 회전과 스케일 속성을 별도의 필드로 제공하지 않는다. 대신 인스펙터에서 일반 Transform 컴포넌트를 펼쳐 3D 회전과 스케일 값을 조정해야 하며, 이 값들은 UI 요소의 최종 렌더링에 영향을 미친다.
Rect Transform 컴포넌트의 속성은 C# 스크립트를 통해 동적으로 제어할 수 있다. 이를 통해 런타임 중에 UI 요소의 위치를 변경하거나 크기를 조정하며, 다양한 상호작용과 애니메이션을 구현할 수 있다. 스크립트에서는 RectTransform 클래스의 인스턴스를 참조하여 작업을 수행한다.
주요 속성에 접근하는 방법은 다음과 같다. anchoredPosition 속성은 앵커를 기준으로 한 로컬 위치를, sizeDelta는 앵커에 따른 크기 변화량을 나타낸다. anchorMin과 anchorMax를 조정하면 앵커의 위치를 설정할 수 있으며, pivot 속성은 요소의 피벗점을 변경한다. 또한 offsetMin과 offsetMax를 사용하면 직사각형의 왼쪽 아래와 오른쪽 위 모서리 위치를 기준으로 크기와 위치를 동시에 제어할 수 있다.
속성 | 설명 |
|---|---|
| 앵커 포인트를 기준으로 한 UI 요소의 위치 |
| 앵커로 인한 크기 변화량 (Width/Height) |
| 앵커의 최소값 (왼쪽 아래 기준) |
| 앵커의 최대값 (오른쪽 위 기준) |
| UI 요소 자체의 피벗점 (회전 및 크기 조정 기준) |
스크립트 제어는 복잡한 UI 로직을 구성하거나, 데이터에 따라 동적으로 레이아웃을 생성해야 하는 경우에 필수적이다. 예를 들어, 인벤토리 시스템에서 아이템 슬롯을 실시간으로 배치하거나, 진행 상태에 따라 게임 내 HUD 요소의 크기를 변경하는 데 활용된다. 이를 통해 정적인 에디터 설정만으로는 구현하기 어려운 유연하고 반응형인 사용자 인터페이스를 만들 수 있다.
Rect Transform은 Unity UI 시스템에서 캔버스 내 모든 UI 요소의 배치를 담당하는 핵심 컴포넌트이다. 일반 게임 오브젝트에 사용되는 Transform 컴포넌트와 달리, Rect Transform은 2D 직사각형 기반의 레이아웃에 특화되어 있어 버튼, 텍스트, 이미지와 같은 UI 요소의 정확한 위치와 크기를 정의한다. 이 컴포넌트는 UI 요소가 다양한 화면 해상도와 화면 비율에 맞춰 적절하게 배치되고 스케일링될 수 있는 기반을 제공한다.
UI 요소를 배치할 때는 앵커와 피벗 개념이 중요하게 작용한다. 앵커는 UI 요소가 부모 Rect Transform이나 화면의 어느 지점에 고정될지를 결정하며, 이를 통해 요소의 위치와 크기가 부모 영역의 변화에 따라 어떻게 반응할지 제어할 수 있다. 피벗은 요소 자체의 회전이나 크기 조절의 기준점이 된다. 예를 들어, 화면 중앙에 팝업 창을 배치하거나, 화면 하단에 고정된 메뉴 바를 만들 때는 앵커 설정을 적절히 활용한다.
인스펙터 창을 통해 Rect Transform의 수치를 직접 입력하거나, 씬 뷰에서 핸들을 드래그하여 시각적으로 조정하는 것이 일반적인 배치 방법이다. 또한, 스크립트를 통해 앵커 프리셋을 동적으로 변경하거나 위치와 크기를 계산하여 배치할 수 있어, 복잡한 동적 UI나 애니메이션이 필요한 인터페이스를 구현하는 데 필수적이다. 이러한 특성으로 인해 Rect Transform은 반응형 디자인 원칙에 따라 유저 인터페이스를 구성하는 데 없어서는 안 될 도구이다.
Rect Transform은 Unity UI 시스템에서 다양한 해상도와 화면 비율에 대응하는 반응형 디자인을 구현하는 핵심 컴포넌트이다. 이는 주로 앵커와 피벗 설정을 통해 이루어지며, UI 요소가 부모 캔버스나 다른 UI 요소에 대해 상대적으로 어떻게 위치하고 크기가 조정될지를 정의한다.
앵커 프리셋을 활용하면 UI 요소를 화면의 특정 모서리나 가장자리에 고정하거나, 부모 영역에 대해 비율적으로 늘리는 설정을 손쉽게 적용할 수 있다. 예를 들어, 화면 좌하단에 고정된 버튼이나 화면 너비 전체를 차지하는 상단 바를 만들 때 유용하다. 더 세밀한 제어가 필요하다면 앵커 포인트를 직접 분리하여 각 모서리의 앵커를 독립적으로 설정함으로써, 부모 컨테이너의 크기 변화에 따라 UI 요소의 위치와 크기가 유연하게 반응하도록 구성할 수 있다.
이러한 Rect Transform의 특성은 하나의 씬으로 다양한 모바일 장치나 모니터 해상도를 지원해야 하는 경우 필수적이다. 개발자는 앵커 프리셋과 캔버스 스케일러 컴포넌트를 조합하여, 해상도 독립적인 UI를 설계할 수 있다. 이를 통해 UI 요소의 레이아웃이 의도한 대로 유지되도록 보장하며, 사용자 경험을 일관되게 제공하는 데 기여한다.
Rect Transform은 Unity의 UI 애니메이션 구현에 핵심적인 역할을 한다. UI 요소의 이동, 확대/축소, 회전과 같은 동적인 변화는 대부분 Rect Transform의 속성을 변경하여 이루어진다. Unity 애니메이션 시스템인 애니메이터(Animator)와 애니메이션 창(Animation Window)을 사용하면, Rect Transform의 앵커(Anchors), 위치(Position), 크기(Size), 회전(Rotation), 스케일(Scale) 속성을 키프레임으로 기록해 부드러운 UI 트랜지션을 만들 수 있다. 예를 들어, 버튼을 누를 때 살짝 커졌다 작아지는 효과나 패널이 슬라이드되며 등장하는 효과는 이러한 방식으로 제작된다.
Rect Transform을 애니메이션과 연동할 때는 특히 앵커와 피벗 설정이 중요하다. 앵커가 화면의 특정 지점에 고정되어 있다면, 위치나 크기 애니메이션은 해당 앵커를 기준으로 작용하게 된다. 또한, 피벗(Pivot) 점은 회전이나 스케일 변화의 중심축이 되므로, 애니메이션의 자연스러운 움직임을 위해 신중하게 설정해야 한다. 스크립트를 통해 코루틴(Coroutine)이나 트윈(Tween) 라이브러리를 활용해 Rect Transform의 속성을 실시간으로 보간하는 방법도 애니메이션 구현에 널리 사용된다.
일반적인 사용 사례로는 팝업 창의 페이드 인/아웃, 스크롤 뷰 내 아이템의 정렬 애니메이션, 프로그레스 바의 채워지는 효과, 토글 스위치의 전환 모션 등을 들 수 있다. 이러한 애니메이션은 사용자 경험을 크게 향상시키며, 정적이었던 인터페이스에 생동감을 부여한다. Rect Transform의 속성은 커브 에디터를 통해 비선형적으로 제어할 수 있어, 더욱 역동적이고 세련된 모션 디자인이 가능하다.
Rect Transform을 사용하다 보면 UI 요소가 예상과 다르게 배치되거나 크기가 변하는 등의 문제가 발생할 수 있다. 이러한 흔한 오류와 그 해결법을 알아본다.
가장 일반적인 문제는 UI 요소가 캔버스 밖으로 벗어나거나 원하는 위치에 정확히 배치되지 않는 경우다. 이는 앵커와 피벗 설정을 혼동했기 때문일 가능성이 높다. 앵커는 부모 Rect Transform을 기준으로 한 고정점을, 피벗은 자신의 중심점을 정의한다. 예를 들어, UI 요소를 화면 중앙에 배치하고 싶다면 부모 캔버스의 앵커를 중앙으로 설정하고, 자신의 피벗도 (0.5, 0.5)로 맞추는 것이 중요하다. 인스펙터에서 앵커 프리셋을 올바르게 선택하지 않으면 위치와 크기 값의 기준이 달라져 혼란을 초래할 수 있다.
다양한 해상도와 화면 비율에서 UI 레이아웃이 깨지는 문제도 자주 발생한다. 이는 앵커 설정이 반응형 디자인에 적합하지 않게 구성되었기 때문이다. UI 요소의 네 모서리를 부모 영역의 특정 지점에 고정하는 '스트레치' 모드 앵커 프리셋을 사용하면, 부모 캔버스의 크기가 변해도 상대적인 간격과 비율을 유지할 수 있다. 또한, Canvas Scaler 컴포넌트를 함께 사용하여 해상도 독립적인 UI를 설계하는 것이 좋다.
스크립트를 통해 Rect Transform을 제어할 때는 로컬 좌표계와 월드 좌표계를 구분해야 한다. anchoredPosition 속성은 앵커를 기준으로 한 로컬 위치를 나타내는 반면, 일반 Transform의 position 속성은 월드 좌표를 사용한다. UI 요소를 이동시킬 목적이라면 anchoredPosition을 사용하는 것이 일반적으로 안전하다. 또한, sizeDelta 속성의 의미를 정확히 이해하지 못하면 원하는 크기 조정이 이루어지지 않을 수 있다. sizeDelta는 앵커로 정의된 영역과 실제 사각형 크기의 차이를 나타내므로, 앵커 설정에 따라 그 해석이 달라진다는 점에 유의해야 한다.
Rect Transform 컴포넌트의 복잡한 레이아웃을 디버깅할 때, Unity 에디터는 시각적 도구를 제공하여 구성 요소의 상태를 직관적으로 파악할 수 있게 돕는다. 가장 핵심적인 도구는 씬 뷰에서 Rect Transform 컴포넌트가 선택된 상태일 때 표시되는 앵커 프리셋 아이콘과 앵커 핸들이다. 이 시각적 표시를 통해 UI 요소의 앵커가 부모 Rect Transform이나 화면의 어느 지점에 고정되어 있는지, 그리고 크기가 어떻게 상대적으로 조정되는지를 한눈에 확인할 수 있다.
에디터의 게임 뷰에서 다양한 해상도와 화면 비율을 시뮬레이션하는 기능은 반응형 UI 설계 시 필수적인 디버깅 방법이다. 게임 뷰 상단의 드롭다운 메뉴를 통해 미리 정의된 해상도나 사용자 지정 해상도를 선택하면, 앵커와 피벗 설정이 다른 화면 크기에서 어떻게 동작하는지 즉시 확인할 수 있다. 이를 통해 스크립트 수정 없이도 레이아웃이 의도대로 유지되는지 검증할 수 있다.
또한, 캔버스 컴포넌트의 시각적 보조 옵션을 활성화하면 디버깅에 유용한 정보를 얻을 수 있다. 예를 들어, 캔버스의 "Render Mode"가 "Screen Space - Overlay"일 경우, 에디터 메뉴의 Canvas > Show Overlay 옵션을 켜면 UI 요소의 실제 배치 순서와 계층 구조를 시각적으로 확인할 수 있다. 복잡한 UI 계층에서 요소가 가려지는 문제를 해결할 때 특히 유용하다.
마지막으로, Unity 에디터의 Gizmo 설정을 통해 Rect Transform과 관련된 추가 시각적 단서를 표시할 수 있다. 인스펙터 창에서 Rect Transform 컴포넌트의 컨텍스트 메뉴를 이용하거나, 에디터의 Gizmos 메뉴에서 관련 옵션을 찾아 활성화하면, 피벗 점의 위치나 경계 상자를 더 명확히 표시할 수 있어 정밀한 배치와 회전 작업에 도움이 된다.