Game Tech Blog

Unity UGUI 최적화 전략 - 캔버스 분할 본문

Unity

Unity UGUI 최적화 전략 - 캔버스 분할

jonghow 2023. 12. 27. 13:36
반응형

Canvas ?

Canvas 란, UGUI 에서 ui요소들을 그리기 위한 하나의 컨테이너이다.

이 것을 특별히 분할하여 사용해야하는 이유가 있는가?

Canvas 는, 일반적으로 Main 하나를 두고 사용하는 경우가 있는데, 내부에서 동적으로 이동, Fill 등의 조그마한 움직임 

처리, Canvas 내부에 마우스 포인터가 왔다갔다 하는 행위들이 일어날때, 하나의 Canvas 로 이루어진 UI의 경우 하위에 모든 오브젝트들을 다시 렌더링해야하는데 이는 ReBuild 된다라고 한다. 

 

예전에, Scroll View 를 사용하면서, 제대로 배치 되지않아서 LayoutRebuilder.ForceRebuildLayoutImmediate(); 함수를 

사용해서 다시 렌더링하거나, GameObject.SetActive(false); 이후에 바로 다시 GameObject.SetActive(true); 함수로 키거나 하는 모든 이러한 과정들이 다시 렌더링을 위함이었고, 즉 Rebuild 과정을 하기 위해 하는 방법들이었다.

 

Canvas를 분할하여 처리를 하게된다면, 늘어난만큼 DrawCall은 증가한다고 한다. 

결국 Rebuild, DrawCall 사이에서 저울질하여 사용하여야 한다는 것이다. 

 

이로인한, Canvas 사용 분할 전략은 여느 블로그에 다 정리되어 있지만, Main Canvas 는 정적이며, Sub Canvas 는 동적으로 사용하도록 전략을 짜는것이 옳다고 본다.

 

 

* 테스트를 눈에띄게 할 수 있었다면 좋았을텐데, 테스트가 정확하게 되지 않아 아쉽다.

 

반응형
Comments