Unity AsyncReadManagerMetrics 가이드
이 문서는 Unity에서 에셋 로드와 관련된 성능을 모니터링하기 위한 AsyncReadManagerMetrics 클래스에 대해 설명합니다. 이 클래스를 사용하면 런타임 중 에셋 로드와 파일 읽기 작업에 대한 지표를 수집하고 분석할 수 있습니다.
AsyncReadManagerMetrics 개요
- AsyncReadManager: Unity는 런타임 중 대부분의 파일을 이 매니저를 통해 읽습니다. 여기에는 에셋 번들, 어드레서블, 리소스가 포함됩니다.
- 지표 수집:
AsyncReadManagerMetrics클래스를 사용하면 런타임에서 성능 지표를 활성화하고 기록된 데이터를 가져올 수 있습니다.
지표 데이터 수집 활성화
지표 컬렉션을 활성화하려면 다음 방법 중 하나를 사용할 수 있습니다:
AsyncReadManagerMetrics.StartCollectingMetrics()메서드 호출- 앱 실행 시
-enable-file-read-metrics커맨드 라인 인자를 전달
참고: Unity 에디터에서는 일부 에셋만 로드되므로, 개발 빌드에서 데이터를 수집하는 것이 중요합니다.
지표 데이터 가져오기
지표를 가져오기 위해 GetMetrics를 호출해야 합니다. 다음 코드를 사용하여 지표 데이터를 가져올 수 있습니다:
# if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
AsyncReadManagerRequestMetric[] metrics
= AsyncReadManagerMetrics.GetMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead);
# endif
이때, 지표를 지우는 여부를 설정함으로써 메모리 오버헤드를 줄일 수 있습니다.
요약 데이터 가져오기
지표의 요약은 다음 메서드를 사용하여 가져올 수 있습니다:
GetCurrentSummaryMetrics: 마지막으로 저장소를 지운 후의 요약 데이터를 반환GetSummaryOfMetrics: 수집된 지표의 요약을 반환
예제 코드:
# if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
AsyncReadManagerSummaryMetrics summaryOfMetrics
= AsyncReadManagerMetrics.GetCurrentSummaryMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead);
# endif
필터링 및 요약 통계
다양한 카테고리로 지표를 필터링하여 관심 있는 데이터만 요약할 수 있습니다. 필터링할 수 있는 항목은 다음과 같습니다:
- 에셋 타입 (예: 텍스처)
- 처리 상태 (대기열, 진행 중, 완료)
- 읽기 타입 (비동기, 동기)
- 우선 순위 (높음, 낮음)
예를 들어, 텍스처와 메시 에셋에 대해 필터링할 수 있습니다.
타입 ID 예시
아래는 현재 지원되는 에셋 타입 ID 목록입니다:
| 타입 ID | 타입 이름 |
|---|---|
| 28 | Texture2D |
| 117 | Texture3D |
| 89 | 큐브맵 |
| 43 | Mesh |
주의사항
AsyncReadManagerMetrics는 개발 빌드에서만 사용할 수 있으며, 관련 코드를 프로세서 지시문으로 보호해야 합니다.- 필터링된 요약 통계를 계산하는 데는 처리 리소스가 필요하므로 지표 수집 후 데이터 분석을 권장합니다.
이 가이드를 통해 Unity에서 에셋 로드 성능을 효과적으로 모니터링하고 최적화하는 방법을 이해할 수 있습니다.