Unity GUI 의 ILayoutElement, ILayoutController - soo:bak
작성일 :
Unity
에서 ILayoutElement
와 ILayoutController
인터페이스는 Unity
의 UI
시스템인 UGUI
에서 레이아웃을 관리하는 데 사용된다.
이 인터페이스들은 Unity
엔진 내부의 C#
인터페이스로 정의되어있으며, Unity
의 소스 코드가 공개적으로 제공되지 않기 때문에,
정확한 코드 구현을 알 수는 없지만,
공식 사이트에 공개된 매뉴얼을 바탕으로 기본적인 목적과 메서드의 선언과 원형에 대해서는 파악할 수 있다.
ILayoutElement
ILayoutElement
인터페이스는 UI
요소가 레이아웃 시스템에 참여하기 위해 구현해야하는 인터페이스이다.
이 인터페이스를 통해 UI
요소는 자신의 레이아웃 관련 속성(예 : 최소 크기, 선호 크기, 유연성 등)을 레이아웃 시스템에 제공하게 된다.
[ILayoutElement]
1
2
3
4
5
6
7
8
9
10
11
12
public interface ILayoutElement {
void CalculateLayoutInputHorizontal();
void CalculateLayoutInputVertical();
float minWidth { get; }
float preferredWidth { get; }
float flexibleWidth { get; }
float minHeight { get; }
float preferredHeight { get; }
float flexibleHeight { get; }
int layoutPriority { get; }
}
CalculateLayoutInputHorizontal()
, CalculateLayoutInputVertical
메서드
: UI
요소가 자신의 수평/수직 방향의 레이아웃 입력을 계산할 때 호출됨
minWidth
, preferredWidth
, flexibleWidth
, minHeight
, preferredHeight
, flexibleHeight
속성
: 각각 UI
요소의 최소 크기, 선호 크기, 유연성을 나타냄
layoutPriority
속성
: 레이아웃 시스템이 여러 요소들 사이의 레이아웃을 계산할 때 요소의 우선순위를 결정함
ILayoutElement 를 구현하는 컴포넌트들
LayoutElement
: 개발자가 수동으로 UI
요소의 최소, 선호, 유연 크기를 설정할 수 있게 해주며,
이를 통해 해당 UI
요소의 레이아웃을 더 세밀하게 제어할 수 있도록 한다.
ContentSizeFitter
: 자식 요소들의 크기에 따라 부모 요소의 크기를 조정한다.
이 컴포넌트는 ILayoutElement
인터페이스를 통해 자식 요소들의 크기 요구사항을 레이아웃 시스템에 전달한다.
Text
, Image
, RawImage
: 텍스트, 이미지의 내용과 크기, 스타일 등에 따라 자신의 선호 크기를 계산한다.
ILayoutController
ILayoutController
인터페이스는 UI
요소가 레이아웃을 직접 조정할 수 있도록 하는 메서드를 정의한다.
LayoutGroup
과 같은 컴포넌트가 이 인터페이스를 구현하여 자식 요소들의 레이아웃을 관리한다.
[ILayoutController]
1
2
3
4
public interface ILayoutController {
void SetLayoutHorizontal();
void SetLayoutVertical();
}
SetLayoutHorizontal()
, SetLayoutVertical()
메서드
: 레이아웃 시스템이 UI
요소의 수평 및 수직 레이아웃을 조정할 때 사용
ILayoutController 를 구현하는 컴포넌트들
LayoutGroup
: 여러 자식 UI
요소들을 관리하는 추상 기본 클래스로, VerticalLayoutGroup
, HorizontalLayoutGroup
, GridLayoutGroup
등이 LayoutGroup
을 상속 받아 특정 레이아웃 패턴을 구현한다.
VerticalLayoutGroup
: 자식 요소들을 수직으로 정렬한다.
HorizontalLayoutGroup
: 자식 요소들을 수평으로 정렬한다.
GridLayoutGroup
: 자식 요소들을 그리드 형태로 정렬한다.
셀의 크기, 간격, 그리고 정렬 방식을 설정할 수 있으며, 그리드 레이아웃을 조정한다.