내일배움캠프 25일차 5/21 TIL + Unity공부
Transform
parent_gameObject.transform.GetChild(0).transform.position;
과 같은 방식으로 부모가 자식 transform가져오는 것도 가능
인스펙터창에는 부모에 대한 상대적인 transform값인 local transform 값이 표시됨
Rect Transform
Rect Transform은 UI의 위치를 나타내는 특수한 transform
기본적으로 pivot은 UI 중심에 있지만, pivot을 이동시키면 UI의 회전같은 행위가 해당 pivot의 위치를 기준으로 바뀌게된다.
Anchor는 부모가 있을 때 자식 UI가 부모 UI의 Rect Transform에 고정되는 것으로 둘이 크기 변화나 위치 변화를 공유한다.
모든 UI는 Canvas의 자식이므로 사실상 모든 UI가 anchor를 가지고있다.
Rect Transform의 Position은 기본적으로 부모와 동일하게 적용된 anchor를 기준으로 얼마나 떨어졌나를 나타낸다.
anchor는 UI를 클릭해보면 중간에 세모 4개가 가운데를 가리키고 있는데 그 엄브렐러 마크처럼 생긴게 anchor다.
anchor의 세모 4개는 각각 transform의 4 대각 방향을 나타내며 부모의 transform에 고정되어있다.
그래서 부모의 바운더리에서 anchor는 벗어날 수 없다.
anchor의 위치는 부모의 4 모서리에 상대적이면 자식의 4모서리에는 절대적이다.
그래서 부모의 4 모서리의 위치가 변하면(부모의 크기가 변하거나 위치가 변하면) anchor의 4 모서리 위치가 변하며 거기에 절대적으로 고정된 자식은 딸려오며 같이 위치가 변화한다.
anchor의 세모 4개가 한점에 모여있으면 자식은 크기가 변하지는 않지만, 세모 4개가 서로 떨어져있으면 부모의 모서리 변화에 따라 그 간격이 늘거나 줄어들며 자식 UI의 크기도 거기에 따라 변화한다.
이걸 확장해서 세모 4개중 2개씩 뭉쳐있으면 해당 뭉쳐진 방향으로는 자식의 크기가 변하지 않는다.
이제 이 Anchor Presets를 보면, 가운데 9가지는 anchor들이 노란 점 기준으로 모여서 위치나 한쪽 방향 크기 조절을 제한하는 것이고
주변에 파란색 화살표는 세모들을 떨어뜨려서 해당 방향으로 크기가 변하게 해주는 것이다
참고로 Anchor나 Pivot의 인스펙터창에서 위치는 0~1까지로 0은 왼쪽 아래, 1은 오른쪽 위에 끝이다
Rect Transform 코딩
RectTransform rectTransform = newPair.GetComponent<RectTransform>();
rectTransform.anchoredPosition = new Vector2(rectTransform.anchoredPosition.x, y);
이렇게 RectTransform을 받아서 anchoredPosition을 수정해주면 오브젝트의 Transform에 localposition을 수정하는 것과 같다