1 분 소요

Unity UI 최적화

UI는 계속 갱신되기 때문에 Dirty Flag를 사용한다.
Dirty Flag는 개체나 컴포넌트의 속성이 변경됐음을 표시하여, 변화를 확인하는 방법이다.
계속 갱신되는 동안 연산을 할 수 없기 때문에 Dirty Flag 를 통해 변화가 있을 경우에만 연산을 하는 방식을 사용한다.


캔버스 분할

유니티 UI 는 캔버스 단위로 렌더링 하기 때문에 캔버스 안에 UI 요소가 변경될 경우 캔버스 전체를 Draw Call 을 하게 된다.

즉 하나의 캔버스에 모든 UI 요소를 넣게 되면 요소 중 하나가 변경되더라도 모든 UI 요소를 다시 그려줘야 한다.

위와 같은 상황을 피하기 위해서 동적/정적 캔버스로 나누어 주면 최적화에 효과적이다.

캔버스는 캔버스의 자식으로 들어갈 수 있기 때문에 정적인 캔버스 안에 동적인 캔버스를 자식으로 넣어 작업할 수 있다.

위와 같은 작업을 Nested Canvas 라고 한다.


그래픽 레이캐스터 제한 및 레이캐스트 타깃 비활성화

그래픽 레이캐스터는 사용자의 입력을 UI 이벤트로 변환하는 컴포넌트이다.

즉 상호작용이 필요하지 않은 UI에는 레이캐스트를 비활성화여 불필요한 연산을 줄일 수 있다.


보이지 않거나 사용하지 않는 UI는 숨기기

사용하지 않거나 보일 필요 없는 UI의 경우에도 Draw Call을 할 수 있다.

따라서 불필요한 연산을 하지 않기 위해 캔버스 컴포넌트 자체를 비활성화 하면 Draw Call을 하지 않기 때문에 캔버스 컴포넌트를 비활성화 해준다.


UI 요소에서 최적의 애니메이터 사용

애니메이터는 값이 변경되지 않더라도 매 프레임마다 UI 요소를 Dirty 처리한다.

이를 해결하기 위해 UI 에서 애니메이션을 사용할때는 DoTween 을 활용한다.

태그: ,

카테고리:

업데이트: