호우동의 개발일지

Today :

article thumbnail

Canvas 최적화 

 


프로파일러로 분석

  • Text를 변경하는 스크립트를 통해 프로파일러로 퍼포먼스 분석

숫자가 커질때의 프로파일러

  • PostLateUpdate.PlayerUpdate를 보면 Canvas에서 그려지는 작업이 발생하는 것을 알 수 있다.
    → 텍스트를 변경하는 작업은 Canvas에서 발생

PlayerLoop 상태

 


버텍스 버퍼

  • 유니티의 UI는 화면에 그려질 때 버텍스 버퍼(Vertex Buffer)로 그려짐
    • Scene → WireFrame으로 보면 버텍스 버퍼를 볼 수 있음
      • 버텍스는 하나의 선(line) 단위
      • 해당 그림에서는 총 28개의 버텍스가 존재

버텍스 버퍼

  • 버텍스 버퍼는 Canvas에 위치함

 


그려지는 과정

버텍스 버퍼 그러지는 과정

  1. 버텍스 버퍼의 변형이 발생
  2. 해당 버텍스 버퍼를 리빌드(Rebuild)

 


최적화가 필요한 이유

  • 하나의 UI가 변경이 일어나면 그 Canvas 전체를 리빌드
    • 그 Canvas 안에 있는 모든 UI를 다시 그리게 된다. → 이는 퍼포먼스 낭비

  • UI가 많아진다면 치명적인 퍼포먼스 저하로 이어질 수 있음

 


최적화 방법

  • 변형이 일어나는 UI를 새로운 Canvas로 옮긴다.

Change Text

  • Canvas를 분리해 줌으로써 변경되지 않은 다른 UI들이 리빌드 되는 것을 막을 수 있다.
    -> 버텍스 버퍼는 Canvas 안에 존재하기 때문