내 프로젝트의 건강검진, Project Auditor 🔎 집중분석
- Project Auditor는 Unity 6.1부터 지원하며, 프로젝트 성능 최적화 및 잠재적 문제(병목 현상) 식별에 유용한 정적 분석 툴입니다. 🛠️
- 프로파일러와 달리 런타임 실행 없이 코드, 에셋, 셰이더, 프로젝트 세팅 등 전반적인 영역의 상세 보고서를 제공합니다. 📊
- 이슈는 Major, Moderate, Minor 등급으로 분류되며,
Ignore Issue 기능으로 특정 이슈를 제외할 수 있습니다. 🚨
- 코드 분석을 통해 메모리 할당 및 박싱(Boxing) 이슈를 식별하며,
Update 함수 내 빈번한 박싱은 Major 이슈로 간주됩니다. 📦
- 박싱은 값 형식을 참조 형식으로 변환 시 힙(Heap) 메모리에 가비지를 생성하여 GC(Garbage Collector) 부하를 유발합니다. 🗑️
string.Format 사용 시 박싱이 발생하므로, .ToString() 호출 또는 TextMeshPro.SetText 같은 최적화된 메서드 사용을 권장합니다. 📝
- 문자열
+ 연산자는 매번 새로운 문자열 객체를 생성하여 가비지를 발생시키므로, StringBuilder 사용을 권장합니다. ➕
- IL Viewer나 IL2CPP 출력(CPP 파일)을 통해 박싱 발생 여부를 직접 확인할 수 있으며, IL2CPP 변환 후에도 박싱 이슈는 여전히 존재합니다. 💻
- 에셋 분석은 메시의
Read/Write Enabled 옵션, Resources 폴더 내 에셋 관리 비효율성 등 메모리 문제를 진단하고 Asset Bundles/Addressables 사용을 제안합니다. 🖼️
- 프로젝트 내 모든 텍스처, 메시, 오디오 클립의 상세 정보(해상도, 크기, 버텍스 카운트 등)를 제공하여 리소스 관리 및 최적화를 돕습니다. 🔍
- 프로젝트 세팅 분석을 통해 Physics 2D 레이어 충돌 매트릭스 비효율성,
Optimize Mesh Data 비활성화 등 성능 저하 요소를 파악하고 개선 방안을 제시합니다. ⚙️
- Project Auditor는 과도한 가비지 생성, 불필요한 객체 할당, 비효율적인 코드, 사용되지 않는 에셋 등을 식별하여 전반적인 프로젝트 성능 최적화에 기여하는 강력한 툴입니다. 💪
데브허브 | DEVHUB | 내 프로젝트의 건강검진, Project Auditor 🔎 집중분석