Unity 최적화 매뉴얼 (2022.3 LTS)
개요
Unity에서 작업할 때 발생할 수 있는 성능 저하 문제를 방지하기 위한 여러 가지 팁과 기법을 안내합니다. 특히, 에셋을 효과적으로 관리하고 최적화하는 방법에 대해 설명하겠습니다.
1. 에셋 검사
실제 프로젝트에서 발생하는 문제는 대개 개발자의 임시 오류에서 비롯됩니다. 예를 들어, 압축되지 않은 4K 텍스처가 프로젝트에 추가될 경우, 모바일 디바이스에서 심각한 메모리 부족 문제를 일으킬 수 있습니다. 이러한 문제를 사전에 방지하는 것이 중요합니다.
2. AssetPostprocessor 사용
Unity에서는 AssetPostprocessor 클래스를 통해 에셋 가져오는 과정에서 여러 가지 규칙을 적용할 수 있습니다. 이 클래스를 사용하면, 에셋 임포트 전후에 특정 작업을 수행할 수 있습니다.
예제 코드
public class ReadOnlyModelPostprocessor : AssetPostprocessor {
public void OnPreprocessModel() {
ModelImporter modelImporter = (ModelImporter)assetImporter;
if (modelImporter.isReadable) {
modelImporter.isReadable = false;
modelImporter.SaveAndReimport();
}
}
}
주요 활용 포인트
- 각종
OnPreprocess메서드를 활용하여 규칙 적용 가능 - 이를 통해 오류 방지 및 자동화된 에셋 관리 가능
3. 일반적인 에셋 최적화 규칙
| 에셋 종류 | 최적화 방법 |
|---|---|
| 텍스처 | Read/Write enabled 플래그 비활성화 |
| 가능한 경우 밉맵 비활성화 | |
| 모든 텍스처 압축 | |
| 적절한 텍스처 크기 제한 적용 | |
| 모델 | Read/Write enabled 플래그 비활성화 |
| 캐릭터 모델에서 리그 비활성화 | |
| 메시 압축 사용 | |
| 오디오 | 플랫폼에 적합한 압축 설정 |
| 오디오 클립을 모노로 설정 | |
| 비트레이트 축소 |
4. 각 최적화 항목에 대한 설명
텍스처 최적화
- Read/Write enabled 플래그 비활성화: 텍스처가 두 번 메모리에 저장되므로, 비활성화하여 메모리 사용량 감소.
- 밉맵 비활성화: Z 뎁스가 상대적으로 변하지 않는 오브젝트에서 사용 시 메모리 절약 가능.
- 모든 텍스처 압축: 타겟 플랫폼에 적합한 텍스처 압축 포맷을 사용하여 메모리 효율을 높임.
모델 최적화
- Read/Write enabled 플래그 비활성화: 불필요한 메모리 소비를 줄이기 위해 모델의 플래그 비활성화.
- 리그 비활성화: 애니메이션화되지 않는 모델에서 리뷰나 불필요한 부하 방지.
- 메시 압축 사용: 데이터 용량을 줄이고 성능 향상.
오디오 최적화
- 모노 설정: 대부분의 모바일 디바이스는 스테레오 지원이 제한적이므로, 모노로 설정하여 메모리 사용량 절감.
- 비트레이트 최소화: 오디오 파일의 비트레이트를 줄임으로써 메모리 소비 및 빌드 크기 감소.
결론
Unity에서 성능 최적화는 프로젝트의 성공에 큰 영향을 미칩니다. 위의 규칙들을 따르고, 에셋 관리 규칙을 자동화함으로써 더욱 효율적인 게임 개발이 가능합니다. 이 문서에서 제공하는 팁을 참조하여 성능을 향상시키기 위한 노력을 기울이시기 바랍니다.