유니티 UI 최적화 방법

PTK·2025년 2월 24일
0

Unity에서 UI 최적화는 성능을 개선하고 프레임 속도를 유지하기 위해 중요하다.
특히 모바일, VR, 혹은 저사양 플랫폼에서 UI가 성능에 영향을 줄 수 있기 때문에 신경 써야 한다.

1. Canvas 최적화

Canvas는 UI 요소들을 그룹화하는 컨테이너로, UI 요소들이 변경될 때마다 전체 Canvas가 리렌더링 된다.

Dynamic UI와 Static UI 분리

Static UI는 자주 변하지 않는 UI 요소들이며, Dynamic UI는 상태가 자주 변하는 UI 요소들이다.
Static UI는 별도의 Canvas로 분리하여 Dynamic UI와 별개로 처리하면 성능을 개선할 수 있다.

Canvas의 재구성 최소화

UI 업데이트 시 전체 Canvas를 재구성하는 것이 아니라, 변경된 부분만 갱신하도록 해야 한다.
가능하면 Canvas의 Render Mode를 WorldSpace로 설정하여, UI가 3D 오브젝트처럼 처리되도록 할 수 있다.

2. UI 요소 최적화

텍스처 최적화

UI에서 많이 사용하는 이미지 텍스처는 압축과 최적화를 통해 성능을 개선할 수 있다.

Sprite Atlas 사용: 여러 개의 스프라이트를 하나의 큰 텍스처에 모아서 사용하면 드로우 콜(Draw Call)을 줄일 수 있다. Unity에서는 Sprite Atlas를 활용하여 여러 이미지를 하나로 묶을 수 있습니다.

텍스트 최적화

TextMeshPro를 사용하여 텍스트 렌더링을 최적화한다. Text 컴포넌트보다 더 나은 성능을 제공하며, 다양한 최적화 기능을 제공한다.

필요한 텍스트만 렌더링: 텍스트가 자주 변경되거나 화면에 표시되지 않는 텍스트는 적절히 캐싱하거나, 최소화하여 성능을 개선할 수 있다.

3. UI 비활성화/비노출 관리

Unity에서는 UI 요소가 비활성화되거나 비노출 상태일 때 렌더링을 하지 않지만, 일부 상황에서 UI 요소가 비활성화된 상태라도 성능에 영향을 미칠 수 있다.

필요 없는 UI 요소 비활성화

화면에 표시되지 않거나 더 이상 사용하지 않는 UI 요소는 SetActive(false)로 비활성화하여 리소스를 절약할 수 있다.

예: 팝업 창, 메뉴 등을 화면에서 사라지게 할 때 SetActive(false)로 비활성화하면 성능이 향상된다.

CanvasGroup 사용

UI 요소에 CanvasGroup을 적용하여 투명도와 상호작용을 제어할 수 있다. 예를 들어, CanvasGroup.alpha로 UI 요소의 투명도를 조정하거나, CanvasGroup.interactable을 false로 설정하면 성능을 조금 더 개선할 수 있다.

4. Draw Call 최적화

드로우 콜(Draw Call) 은 렌더링 시 GPU가 처리하는 단위로, 드로우 콜이 많을수록 성능에 큰 영향을 미친다.

UI 요소 그룹화

여러 개의 UI 이미지나 스프라이트를 하나의 텍스처(Atlas)로 묶어 드로우 콜을 줄인다.
UI 요소가 많을 때는 Panel을 활용하여 그룹화하거나 UI 요소들을 최소화하는 방법을 고려해야 한다.

5. Prefab과 Object Pooling 사용

UI에서 자주 생성되고 파괴되는 객체는 Prefab과 Object Pooling 기법을 활용하여 성능을 최적화할 수 있다.

Object Pooling

UI 요소가 자주 생성되고 삭제되는 경우, Object Pooling 기법을 사용하여 새로운 오브젝트를 계속 생성하지 않도록 한다.

예를 들어, 스코어판, 알림창 등을 화면에 표시할 때 객체를 미리 만들어두고 재사용하면 성능을 크게 향상시킬 수 있다.

6. 성능 프로파일링

Unity Profiler를 사용하여 UI가 성능에 미치는 영향을 분석하고, 최적화가 필요한 부분을 파악 가능 하다. UI Rendering 항목에서 드로우 콜과 UI 업데이트의 성능을 분석할 수 있다.

0개의 댓글