[UNITY],[C#]/TIL : UNITY

[Unity] 최적화 방법들을 알아보자

네,가능합니다 2024. 11. 20. 00:55

오늘은 많이 사용되는 최적화 방법들을 찾아보고 친해지는 시간을  가져보려고 한다.

 

추후 프로젝트의 틀이 잡혀갈때쯤이면 최적화에도 점점 시간을 투자하게 될텐데, 그때 이 글을 보면서 기본적인 최적화 방법을 숙지한다면 좋지 않을까 생각한다.

 

오늘 알아볼것은 LOD, UnityProfiler, 배치 최적화 이렇게 3가지에대해서 간단하게 알아보겠다.

 

LOD(Level of Detail)

멀리 있는 오브젝트의 디테일을 줄여 성능을 최적화 하는 기술이다.

 

적용방법은 간단하다. 원하는 오브젝트에 LOD Group 컴포넌트를 추가해주면 된다.

그리고 각 LOD 단계에 사용할 저해상도 모델을 설정하고, 거리 슬라이더를 조정하여 LOD 전환 시점을 설정해주면 된다.

(주로 건물, 자연 이런 정적인 오브젝트에 설정해주는 편이다.)

 

Unity Profiler

유니티에서 제공해주는 프로파일러이다.

 

Window > Analysis > Profile을 선택하여 켤 수 있다.

 

CPU Usage : 스크립트, 물리, 렌더링 등에서 사용된 CPU 사용량 분석

GPU Usage : GPU사용량 분석

Memory : 메모리 사용량과 GC확인

 

이 프로파일러를 이용하면 어떤 부분을 최적화 해야할지, 최적화는 적당하니 좀 더 높은 품질을 만들어 볼지 등의 판단을 할 수 있다.

 

배치 최적화

드로우 콜을 최소화 하여 렌더링 성능을 개선할 수 있다.

 

Static Batching : 정적 오브젝트를 선택하고 Inspector에서 Static을 체크해준다. 이렇게하면 빌드 시 정적 오브젝트를 하나의 배치로 처리하게 된다.

 

Dynamic Batchinf : Project Settings > Player > Dynamic Batching 활성화. 작은 크기의 동적 오브젝트가 자동으로 배치에 포함됨.

 

여기서 작은 크기란

 

버텍스와 인덱스의 개수가 제한을 초과하지 않아야한다.

버텍스 : 300개 이하

인덱스 : 900개 이하

 

이러한 작업들은 한다고 무조건 좋은것이 아니니 항상 프로파일링을 하고, 프로파일링 결과에 따른 최적화 기법을 선택하여 작업하는것이 올바르다.

 

CPU를 사용해서 GPU사용량을 줄이고, CPU를 사용해서 Memory를 효율적으로 사용하는 방법 등 여러가지 방법이 있지만 방금 말했듯 지금 어떤 최적화가 나에게 필요한지를 판단하는것부터 시작하자.