A guide to optimizing Unity UI – 번역

A guide to optimizing Unity UI

원문 링크

 

A guide to optimizing Unity UI

확인 완료한 버전: 5.3 – 난이도: 고급

유니티에서 제공되는 사용자 인터페이스(User Interface)를 최적화하는 작업은 예술에 가깝습니다. 엄격한 규칙은 사용하기가 쉽지 않습니다; 그대신, 각각의 상황마다 시스템의 동작을 염두해두고 세밀하게 분석해야합니다. 유니티 UI를 최적화할 때 가장 핵심적인 부분은, 드로우 콜(Draw Call)과 배칭 비용(Batching Cost) 사이에서 균형을 맞추는 일입니다. 일반적인 기술을 사용해서 둘(드로우 콜 또는 배칭 비용) 중 하나를 줄일 수 있겠지만, 복잡한 UI는 드로우 콜과 배칭 비용 사이에서 적절한 절충점을 찾는 것이 중요합니다.

하지만, 모범 사례는 어디에나 있는 것과 마찬가지로, 유니티 UI를 최적화할 때는 프로파일링부터 시작해야 합니다. 유니티 UI 시스템의 최적화를 시도하기 전에, 성능상 문제점의 정확한 원인을 찾는 것이 가장 중요합니다. 유니티 UI 사용자가 겪는 네가지의 공통적인 문제점들은 다음과 같습니다:

  • 과도한 GPU 프래그먼트 쉐이더(Fragment Shader) 활용 (즉, fill-rate 초과).
  • CPU에서 캔버스 배치(Canvas Batch)를 리빌딩(Rebuilding)하는데 시간이 너무 오래 걸림.
  • 캔버스 배치를 리빌딩하는 횟수가 너무 많음.
  • CPU에서 정점을 생성하는데 시간이 너무 오래 걸림(주로 Text에서 발생).

원칙적으로는, GPU로 전송되는 드로우 콜(Draw Call)의 수를 정해놓고, 이를 통해서 성능이 제한되는(더 많은 리소스가 사용되지 않도록) 유니티 UI를 생성하는 것이 가능합니다. 하지만, 실제로는 드로우 콜에 의해서 GPU에 과부하가 걸리는 프로젝트는 대부분 fill-rate의 초과로 인해서 문제가 발생하는 경우가 많습니다.

이 글에서는 유니티 UI의 기본이 되는 개념, 알고리즘, 코드는 물론 일반적인 문제와 그에 대한 해결책에 대해서 살펴볼 예정입니다. 총 5개의 챕터로 나눠서 살펴보겠습니다.

UI Source Code

유니티 UI의 그래픽 및 레이아웃 컴포넌트는 모두 오픈소스 입니다. 이 소스코드는 UI 카테고리 아래에 위치한, 유니티의 Bitbucket 저장소에서 찾을 수 있습니다.

 

내용 끝까지 읽어주셔서 감사합니다.
배너 클릭은 저에게 많은 힘이 됩니다.
감사합니다 🙂

 

다음글 – Fundamentals of Unity UI

RonnieJ

프리랜서 IT강사로 활동하고 있습니다. 게임 개발, 웹 개발, 1인 기업, 독서, 책쓰기에 관심이 많습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다