목록최적화 (2)
게임 출시를 앞두고, Android플랫폼의 심각한 발열과 낮은 프레임에 대한 최적화를 수행했다. 여러개의 프로젝트를 런칭하면서 쌓인 노하우 및 새로 공부한 지식으로 유의미한 최적화 성과를 거두었기에 최적화 방법을 공유한다. 먼저, 최적화 방법 공유에 앞서 최적화 대상 프로젝트의 스펙은 다음과 같다 -Unity 2021.3.8f로 개발 -URP 프로젝트 -NGUI사용 최적화 성과 (갤럭시 s8기준) FPS : 20~30 -> 50~60 용량 : 400mb -> 300mb 발열 : S22에서 심각한 발열로 인해 30~40fps가 나옴 -> S22와 같은 심각한 발열 기기에서 거의 발열 없이 수십분 이상 구동 가능. 안정적인 60fps유지. 이와같은 성능을 유지하기 위해선 여러가지 복합적인 이유들이 있겠지만,..
1. Scene 전환 시 메모리 문제 씬 전환 중 하위 디바이스에서 메모리 부족으로 앱 크래시 발생 빈 Scene을 만들어 경유 하여 장면 전환 2. Distance검사 게임이 무거워지면서 Distance검사도 부하가 생김 직접 거리를 검사하는 것이 아니라 콜리더 체크로 해결. 3. enum키를 사용하는 Dictionary enum을 사용한 dictionary는 박싱을 발생시키므로, 가비지가 발생된다 타입에 맞는 enum comparer를 만들면 GC가 발생하지 않음. 4. Android Native Crash 5. 메모리 부족으로 인한 크래시 Mono 2.0의 보헴 GC는 단편화에 취약. GC는 Managed Heap GC.Collect의 빈도를 증가 -> OutOfMemory가 크게 줄어듬 5-1. ..