Canvas 최적화
프로파일러로 분석
- Text를 변경하는 스크립트를 통해 프로파일러로 퍼포먼스 분석
- PostLateUpdate.PlayerUpdate를 보면 Canvas에서 그려지는 작업이 발생하는 것을 알 수 있다.
→ 텍스트를 변경하는 작업은 Canvas에서 발생
버텍스 버퍼
- 유니티의 UI는 화면에 그려질 때 버텍스 버퍼(Vertex Buffer)로 그려짐
- Scene → WireFrame으로 보면 버텍스 버퍼를 볼 수 있음
- 버텍스는 하나의 선(line) 단위
- 해당 그림에서는 총 28개의 버텍스가 존재
- Scene → WireFrame으로 보면 버텍스 버퍼를 볼 수 있음
- 버텍스 버퍼는 Canvas에 위치함
그려지는 과정
- 버텍스 버퍼의 변형이 발생
- 해당 버텍스 버퍼를 리빌드(Rebuild)
최적화가 필요한 이유
- 하나의 UI가 변경이 일어나면 그 Canvas 전체를 리빌드
- 그 Canvas 안에 있는 모든 UI를 다시 그리게 된다. → 이는 퍼포먼스 낭비
- 그 Canvas 안에 있는 모든 UI를 다시 그리게 된다. → 이는 퍼포먼스 낭비
- UI가 많아진다면 치명적인 퍼포먼스 저하로 이어질 수 있음
최적화 방법
- 변형이 일어나는 UI를 새로운 Canvas로 옮긴다.
- Canvas를 분리해 줌으로써 변경되지 않은 다른 UI들이 리빌드 되는 것을 막을 수 있다.
-> 버텍스 버퍼는 Canvas 안에 존재하기 때문