티스토리 뷰

728x90

youtu.be/eH-PdFKgctE

UI Batching

UI Batching Rule

2개이상의 비주얼컴포넌트가 있을때 UI Batch가 일어납니다.

  • 같은 Canvas 일것
  • 같은 Material을 사용할것
  • 같은 Sprite Atlas를 사용할것
  • RectTranform이 서로 동일평면에 일것. (같은 z positon)
  • 같은 Mask에 clipped될것

UI Batch를 확인하려면 FrameDebugger와 Profiler의 UI항목을 이용하여 볼 수 있음.

Profiler에서는 Batch Breaking Reason도 확인 가능.

 

TextMesh Pro

  • Text 컴포넌트는 각 글자(character)마다 mesh를 생성함. outline이나 shadow 효과를 주려면 복사된 텍스트로 제어하여 mesh가 더 많이 필요. (overdraw). TextmeshPro는 효과로 인한 추가 mesh는 필요하지 않음.
  • TextMesh Pro는 텍스트를 vector형식으로 그림
  • 텍스트에 효과를 자주 쓸경우에는 Textmesh pro가 성능에 도움을 줌

Rebuild Process

canvas내의 ui 요소가 변경되면 element를 dirty layout으로 세팅함.

색상이나 meterial, 이미지변경과 같은 그래픽 변경은 Element를 dirty graphic으로 세팅함.

dirty로 표시된 요소(element)가 있으면 재계산하여 ui를 rebuild하게됨.

Transform이 변경되었을때, 자식 gameobject 중 active된 녀석을 전부 rebuild한다. vertex나 layout설정 전부
parent-child 구조가 변경되어도 rebuild 한다. 즉, 계층구조를 바꾸면 전체 rebuild가 발생하므로 지양해야함
layout 컴포넌트는 유용한데,, child의 순서는 레이아웃의 구조를 결정함. 따라서 child의 순서를 바꾸면 layout 전체가 dirty상태가 되어 rebuild로 빠짐. 즉 scroll rect의 경우 스크롤될때마다 rebuild 함
enable, disable, animatin이 발생되면 setdirty가 호출됨.

Layout component를 쓸때 제안.

  • 재구성이 필요할 때 레이아웃을 활성화하자. 필요하지 않을 때는 비활성화하고.
  • 자식오브젝트수를 줄여보자; UI element를 결합해서
  • 커스텀한 레이아웃 관리자 스크립트를 만들자; 레이아웃 업데이트시기를 제어하도록.
  • 오브젝트 풀 스크롤 리스트를 만들기; 스크롤 할 때 element를 재사용

Pixel Perfect는 움직이는 요소가 많으면 매우 비싸다. 즉 움직이지 않는 ui는 해도되는데, 스크롤링 같은 데는 해제하자.
animator를 사용하는 ui는,, 동작할때마다 rebuild됨.
하나의 큰 캔버스가 아닌 서브캔버스로 나눠서 관리하자.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31