유니티에서 가장 많이 다루는 컴포넌트가 무엇이냐?라고 물으면
이거라고 대답해도 절반은 맞을만큼 자주 쓰이는 녀석이다.
언뜻 배워서 Rect는 UI고 Transform은 인게임 아니에요? 라고 하는 경우가 많다.
하지만 그것은 일부분만 맞고
사실 2D Layout을 위한 것이다.
주로 RectTransform의 정의하는 사각형 안에 UI 요소를 집어넣기 때문에 그렇게 말하는 것이다.
**다르게도 충분히 이용가능하다... 하지만 굳이..? RectTransform을 쓰진 않는다.
**사실 Transform은 잘 알고 있을테니.. RectTransform 에 대해서 더 잘 알아보자
유니티의 공식 문서가 제공한다.
아래 내용 중 2가지가 RectTransform을 쓰는 이유라고 할 수 있다.
그렇다면 Transform의 Position이
어떻게 RectTransform에서 작용하는 것일까??
제일 중요한 부분이다.
1. Position(WorldSpace)
- World Space는 게임 상에서의 실제 절대적 위치를 말한다.
** RectTransform에서는 Pivot 위치를 말한다.
2. Position(ScreenSpace)
- Scereen Space는 우리가 보고있는 Screen에서 어디에 있는지를 말한다.
-> World Space가 멀더라도 Screen Space는 가까울 수 있다.
** RectTransform에서는 Pivot 위치를 말한다. -> 물론 얘는 스크린에서의 Pivot 위치다.
3. LocalPosition
- 우리가 Transform에서 기본으로 보는 위치로 Parent에 종속적인 위치를 말한다.
** RectTransform에서는 Pivot 위치를 말한다.
4. rect.Position
- 피벗과 (0, 0) 과의 거리차를 말한다. -> 부모가 있다면 최상위 오브젝트의 rect.Position을 수행한다.
** (0,0) - (Pivot.X, Pivot.Y)
????? 아니 무슨 Pivot 위치만 주냐??
RectTransform은 위치를 바꿀 수 없는 건가? Pivot은 정하면 바꿀 수 없잖아???
그래서 우리는 AnchorePosition을 쓴다.
5. AnchoredPosition
-앵커가 없다면 Pivot 위치를 말하는 것이고
-앵커가 있다면 실제로 RectTransform의 Inspector 에 나오는 X, Y 수치를 말한다.
다시 말해서 Anchor로부터 떨어진 거리를 의미한다.
쉽게 말하면 Pivot 위치 - Anchor 위치
그렇다. 우리가 실제로 Script 상에서 RectTransform을 가지고 있는 오브젝트를 조작하고 싶다면
AnchoredPosition을 써야하는 것이다.
우리는 Transform으로 위치를 적용하게 되면
Screen의 크기마다 다르게 보이는 경우가 많다.
하지만 RectTransform으로 배치를 한다면 Anchor만 잘 정해주면 어느정도 해상도 대응이 가능해진다.
그러므로 UI 작업할 때는 위치를 변경할 때 RectTransform으로 하는 것이 바람직하다.
'Game Development, 게임개발 > 개발' 카테고리의 다른 글
Observer Pattern를 Unity에서 이용하기 (0) | 2022.06.05 |
---|---|
Convert 그리고 Parse의 문화권 문제 [C#] (0) | 2022.05.22 |
C#에서의 값 형식, 참조 형식, 박싱(Boxing), 언박싱(Unboxing) [Unity] (0) | 2022.04.05 |
C#에서의 Func, Action [Unity] (0) | 2022.04.04 |
아이템 인벤토리 확장 기능 구현하기 (0) | 2022.03.20 |