피드로 돌아가기
Dev.toFrontend
원문 읽기
SyncTransform 최적화를 통한 UGUI 렌더링 비용 7ms 절감 전략
Unity UGUI Optimization: Why Rendering.UpdateBatches Can Cost More Than Your Combat Scene
AI 요약
Context
Unity UGUI의 Rendering.UpdateBatches 비용이 전투 씬보다 높은 7ms를 기록하는 병목 현상 발생. 빈번한 SetActive 호출과 TransformDirty 전파로 인해 SyncTransform 부하가 누적되는 구조적 한계 직면.
Technical Solution
- SetActive 호출 시 발생하는 UI hierarchy 전체의 Transform 동기화 및 Canvas dirty flag 업데이트 차단
- 고빈도 토글 요소에 대해 SetActive 대신 localScale 0/1 전환 방식을 적용하여 SyncTransform 트리거 원천 제거
- 동적 UI와 정적 UI를 분리한 Dedicated Canvas 구조 설계를 통해 업데이트 전파 범위 최소화
- 수명 주기가 긴 재사용 요소에 Object Pooling을 도입하여 런타임 인스턴스 생성 및 파괴 비용 최적화
- Alpha fade 방식을 활용한 가시성 제어로 Transform 데이터 변경 없이 UI 상태 제어
- Nested Canvas 구조의 커버리지를 분석하여 무효화(Invalidation) 범위가 넓은 상위 Canvas 식별 및 분리
실천 포인트
- 고빈도 UI 토글 시 SetActive 대신 localScale 또는 Canvas Group Alpha 사용 검토 - 정적 UI와 동적 UI가 동일 Canvas에 배치되어 불필요한 Rebuild가 발생하는지 확인 - Rendering.UpdateBatches 내 SyncTransform 호출 횟수와 성능 피크 지점의 상관관계 프로파일링 - LayoutGroup 및 ContentSizeFitter의 런타임 업데이트 최소화 설계 적용