Unity/Tips

Unity Canvas(UGUI) refresh

최애뎡 2021. 11. 23. 15:38
728x90
반응형

요즘은 이래 저래 뭘 만들면 나중에 바로 좀 쓸 수 있게 해 두는 편인데

요즘 게임에 자주 등장하는 UI를 만들다가 문제가 발생..

이게 정상적인 모습이고

요게 비정상적인..

차이를 자세히 보면

패널을 바꿀 때마다 아이콘의 위치가 가운데로 가지 않고 기존 위치에 머물러 있음

-> 분명 코드에서는 위치를 맞춰 줬음에도...

 

이런 경우가 UGUI에서 많이 나타나는 문제인데 이는 꼭 이 경우뿐만 아니라 Canvas안에서 active를 비활성화해서 작업을 해야 한다는 경우 등에서 흔히 나타나는 버그이다.

해결 방안은 간단

-> LayoutRebuilder.ForceRebuildLayoutImmediate();

을 사용하면 되고 

매개변수로는 refresh가 되어야 하는 RectTransform을 넘겨주면 된다.

 

https://docs.unity3d.com/2017.3/Documentation/ScriptReference/UI.LayoutRebuilder.ForceRebuildLayoutImmediate.html

 

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를 읽는 습관!

반응형