작성일 :


Unity 에서 ILayoutElementILayoutController 인터페이스는 UnityUI 시스템인 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

: 자식 요소들을 그리드 형태로 정렬한다.

셀의 크기, 간격, 그리고 정렬 방식을 설정할 수 있으며, 그리드 레이아웃을 조정한다.



참고 : [Manual]Unity UI: Unity User Interface