Addressables는 에셋을 주소로 불러온다

Addressables는 프로젝트 에셋을 주소로 찾아 불러오는 시스템입니다. 에디터에서 주소와 그룹을 정리해 콘텐츠 빌드를 만들면, 코드에서는 파일 경로 대신 알아보기 쉬운 키로 프리팹이나 리소스를 요청할 수 있습니다.

처음부터 모든 파일을 Addressable로 바꾸지는 마세요. 시작할 때 바로 필요하지 않거나 나중에 업데이트·교체할 가능성이 큰 에셋부터 골라 적용하는 게 낫습니다.

빌드 전에 정할 네 가지

주소는 사람이 알아보기 쉽고 오래 써도 바뀌지 않는 이름이 좋습니다. Group은 build/load path, update restriction, packing schema 같은 설정을 공유하는 구성 단위입니다. 같은 Group이라고 무조건 한 번에 로드되는 것은 아니며, 실제 AssetBundle 묶음은 Bundle Mode에 따라 달라집니다.

Label은 여러 Group의 에셋을 런타임 키나 Groups 창 필터로 함께 찾을 때 씁니다. Pack Together By Label을 쓰면 Label 조합이 번들 경계가 되므로 조합이 늘수록 번들 수도 늘 수 있습니다.

  1. 주소 이름 규칙을 먼저 정합니다. 예: ui/popup-settings, characters/player/default.
  2. build/load path와 update restriction을 공유할 에셋끼리 Group을 나누고 Bundle Mode를 확인합니다.
  3. 런타임에서 함께 찾을 분류만 Label로 만들고, Label 조합이 번들 수에 미칠 영향을 확인합니다.
  4. 콘텐츠 빌드 결과를 버전 관리할지, 빌드 산출물로만 둘지 팀에서 미리 정합니다.

로드와 해제에서 많이 틀리는 부분

에셋을 주소로 불러온 뒤 참조를 해제하지 않으면 reference count가 남아 unload 시점을 추적하기 어려워집니다. 반대로 너무 일찍 해제하면 dependency를 더 이상 사용하지 않는다고 Addressables에 잘못 알리게 됩니다. LoadAssetAsync로 받은 handle은 Release, InstantiateAsync로 만든 인스턴스는 ReleaseInstance로 수명 주기를 맞추세요.

처음부터 원격 배포까지 붙이지는 마세요. 로컬 그룹 하나로 빌드, 로드, 해제를 먼저 확인한 뒤 배포 구성을 늘리면 어디서 틀렸는지 찾기 쉽습니다.

검증 범위

공식 문서 대조

검증일

Unity 6과 Addressables 4.0.2 공식 문서를 대조했습니다. 별도 프로젝트에서 직접 재현한 결과는 아닙니다.