반응형
Addressables 시스템이란?
Addressable Assets 시스템은 Unity에서 게임 리소스를 효율적으로 관리하고 로드할 수 있도록 해주는 공식 프레임워크다
개발자는 에셋에 주소(Address)를 지정하고, 런타임에 해당 주소를 통해 비동기로 로드하거나 해제할 수 있다
핵심 목적
어드레서블을 사용하는 핵심 목적은 다음과 같다
- 메모리 효율 향상: 필요한 시점에만 로드하고, 사용 후 해제 가능
- AssetBundle 수동 관리 불필요: Unity가 번들링 및 의존성 자동 처리
- 유연한 콘텐츠 업데이트 및 배포: 원격 리소스 관리, CDN 지원
- Resources 폴더의 한계 극복: 빌드에 모든 리소스를 포함하지 않아도 됨
Addressables 주요 개념
1. 주소(Address)
- 에셋에 이름 또는 키를 부여하여, 런타임에 해당 키로 로드할 수 있
2. 에셋 그룹(Asset Groups)
- 어드레서블 에셋들을 그룹 단위로 구성
- 각 그룹에 대해 로컬/원격 위치, 번들 설정, 캐싱 정책 등을 설정 가능
- 번들링 전략(단일/다중), 빌드/로딩 경로를 그룹별로 분리 가능
3. 카탈로그(Catalog) 기반 콘텐츠 업데이트
- 에셋 빌드 시 catalog.json, catalog.hash가 자동 생성됨
- Catalog는 에셋 주소와 번들 파일의 매핑 정보를 담고 있으며, 해시 기반으로 변경 여부를 판단
- 앱 실행 시 Unity는 로컬과 원격의 해시를 비교하여 변경된 리소스에 대해서만 다운로드 수행
- 전체 번들을 다시 받지 않고도 선별적으로 콘텐츠를 업데이트 가능
4. 비동기 로딩 및 해제
- Addressables.LoadAssetAsync<T>()를 통해 비동기로 로드
- 이 시점에 해당 번들이 로컬에 없다면 자동으로 원격에서 다운로드
- 사용 후 Addressables.Release()를 호출하면 해당 리소스를 메모리에서 해제
- 디스크 캐시에는 유지되므로, 이후 로딩 시 빠르게 접근 가능
정리
Addressables는 리소스를 주소 기반으로 로드하고, 동적으로 관리하며, 필요한 것만 다운로드 및 해제할 수 있게 한다
그리고 내부적으로는 AssetBundle 시스템 위에 구축되어 있으며, 번들, 의존성, 캐시, 업데이트까지 모두 자동 처리해준다
기존의 Resources 폴더 대비 더 나은 유지 보수성, 메모리 관리, 확장성을 제공한다
구현/사용법에 대해서는 추후 별도 글을 남기겠다
Reference
어드레서블 에셋 시스템으로 메모리 최적화하기 - Unity Tech Blog
'프로그래밍 > Unity' 카테고리의 다른 글
| Photon PUN (Photon Unity Networking) (0) | 2025.03.25 |
|---|---|
| Unity Asset Bundle (0) | 2025.03.25 |
| Unity Managed code stripping 코드 스트리핑 (0) | 2025.03.25 |
| 스크립팅 백엔드(Scripting Backend)란? (0) | 2025.03.24 |
| Unity의 Scripting Backend, Mono와 IL2CPP 빌드 차이 (0) | 2025.03.24 |