Unity Canvas(UGUI) refresh
요즘은 이래 저래 뭘 만들면 나중에 바로 좀 쓸 수 있게 해 두는 편인데
요즘 게임에 자주 등장하는 UI를 만들다가 문제가 발생..
이게 정상적인 모습이고
요게 비정상적인..
차이를 자세히 보면
패널을 바꿀 때마다 아이콘의 위치가 가운데로 가지 않고 기존 위치에 머물러 있음
-> 분명 코드에서는 위치를 맞춰 줬음에도...
이런 경우가 UGUI에서 많이 나타나는 문제인데 이는 꼭 이 경우뿐만 아니라 Canvas안에서 active를 비활성화해서 작업을 해야 한다는 경우 등에서 흔히 나타나는 버그이다.
해결 방안은 간단
-> LayoutRebuilder.ForceRebuildLayoutImmediate();
을 사용하면 되고
매개변수로는 refresh가 되어야 하는 RectTransform을 넘겨주면 된다.
Unity - Scripting API: UI.LayoutRebuilder.ForceRebuildLayoutImmediate
Normal use of the layout system should not use this method. Instead MarkLayoutForRebuild should be used instead, which triggers a delayed layout rebuild during the next layout pass. The delayed rebuild automatically handles objects in the entire layout hie
docs.unity3d.com
항상 document를 읽는 습관!