본문 바로가기
프로그래밍/Unity

Unity Addressable

by argentdarae 2025. 3. 25.
반응형

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

Addressables - Unity Doc

어드레서블 에셋 시스템으로 메모리 최적화하기 - Unity Tech Blog

어드레서블 개요 - Unity Manual