HorizontalLayoutGroup / VerticalLayoutGroup update 레이아웃 업데이트 문제

 

# 문제점

Horizontal이나 Vertical Layout Group을 사용하고, 

텍스트들을 중앙정렬하고 싶어서 텍스트들에 각각 SIzeFitter(+Prefered width)를 붙여주면

종종 아래와 같이 겹쳐져 버리는 경우가 발생한다.

 

 

내가 원하는건 이런식으로 배열되게 하는 것이었는데...

의외로 해결방법은 간단하다. 위와같은 상황에서는 굳이 ContentSizeFitter를 사용하지말 것.

가급적 LayoutGroup과 SizeFitter는 같이 사용하지말아라!

 

하위에 있던 fitter를 전부 삭제하고, Horizontal LayoutGroup에서 Control ChildSize의 Width를 체크하자.

 

# SizeFitter를 꼭 써야하는 경우엔?

하지만 위와 같은 상황이 아니라 Fitter를 꼭 사용해야하는 경우

해당 Layout Group을 레퍼런스잡아서 아래의 코드를 실행하면 강제 업데이트 된다.

LayoutRebuilder.ForceRebuildLayoutImmediate((RectTransform)HorizontalGrp.transform);

# 추가 2

다른 초기화 방법.

horizLayoutGroup.CalculateLayoutInputHorizontal();
horizLayoutGroup.CalculateLayoutInputVertical();
horizLayoutGroup.SetLayoutHorizontal();
horizLayoutGroup.SetLayoutVertical();

# 추가 3

그냥 모든 텍스트들을 다 세팅한 다음 해당 게임오브젝트의 Enable을 껏다가 켜면 대부분 해결된다.

 

 

댓글

Designed by JB FACTORY