유니티

[유니티] Profiler를 이용하여 최적화 하기

HorseDragon 2023. 2. 24. 14:01

게임을 돌리다 보면 어느 한 장면에서 좀 버벅거리는 경우가 있음.

그럴 땐 CPU를 누가 잡아먹는지 찾아서 스크립트를 최적화 할 필요가 있다.

특히 스크립트에서 void Update()를 남용하게 되면 그런 현상이 꽤나 있음.

 

Window>Analysis>Profiler로 찾아들어가도 되고, Ctrl+7 을 눌러도 뜬다.

 

그러면 뭐가 얼마나 차지하는지 살펴보자.

이것저것 클릭해보면 대충은 감을 잡을 수 있음.

 

CPU를 누가 많이 먹는지 보자.

Others는 유니티를 돌아가게 하는 부분이라서 어쩔수 없는 부분이고,

Script가 혹시라도 중간중간 튀는지 확인해볼 필요가 있다.

 

주기적으로 Script의 CPU Usage가 높아졌는데, 아래 Hierarchy 탭에서 찾아들어가니 TrainBullet.cs의 Update()가 CPU를 먹고 있다. (TrainBullet은 게임 내의 자동 사냥 기능)

보면 GC Alloc가 1.3MB라고 되어있는데, 주기적으로 GarbageCollector(GC)에서 소화시켜준다. 

Project Settings의 Other Setting에서 Use incremental GC를 체크해두면

GC를 한번에 처리하지 않고, 여러번에 나눠서 처리하기 때문에 CPU에 Usage에 끼치는 영향을 최소화 할 수 있다.