TOOLS & SYSTEMS / 기술 노트

Addressables 카탈로그 옵션을 줄이기 전에 확인할 것

주소·GUID·Label 사용 경로와 내부 이름·카탈로그 압축을 분리한다. 옵션 변경으로 로드가 깨지는 조건을 예제·실습·풀이로 확인한다.

카탈로그에서 문자열을 빼도 로드 계약은 남아야 한다

어드레서블 관리 팁의 용량 설정을 실제 키 사용과 연결해 정리했다. 카탈로그는 키를 자원 위치와 의존성 등에 연결하는 메타데이터다. 카탈로그 파일 크기, 파싱 시간, 전체 번들 다운로드 크기는 서로 다른 값이다.

Addressables 1.21 문서를 기준으로 설명한다. 현재 프로젝트가 다른 버전이면 해당 패키지 문서와 메뉴를 먼저 확인한다. 원문의 ‘켜면 로드 시간이 늘어난다’ 같은 문장은 측정 조건 없이 고정 수치나 보편적인 성능 결과로 옮기지 않았다.

옵션영향을 받는 호출 예변경 전 확인
Include AddressesLoadAssetAsync(“marker”)문자열 주소를 사용하는 코드·데이터
Include GUIDsAssetReferenceInspector 참조와 GUID 키
Include LabelsLoadAssetsAsync(“stage-a”)Label 조회와 다운로드 의존성
Internal Asset Naming번들 내부 식별업데이트 기준 상태·ID 일관성
Compress Local Catalog로컬 카탈로그 보관 형태파일 크기와 초기화 시간

AssetReference를 쓰는 그룹에서 GUID를 빼면 필요한 조회 키가 사라질 수 있다. 콘텐츠 패킹·로딩 스키마, AssetReference 문서

세 가지 접근 경로의 예

같은 marker를 주소·AssetReference·Label 세 경로로 사용하는 가상의 실습 장면을 만든다. 아래는 각각의 로드 구간이며 실제 게임의 키가 아니다.

var byAddress = Addressables.LoadAssetAsync<GameObject>("study-marker");
var byReference = Addressables.LoadAssetAsync<GameObject>(markerReference);
var byLabel = Addressables.LoadAssetsAsync<GameObject>("study-markers", null);

Addressables·UnityEngine 네임스페이스와 AssetReference인 markerReference가 필요하다. 각 작업은 완료 상태를 검사하고 사용 종료 시 해당 획득분을 Release한다. 이 세 줄 자체는 핸들 수명을 구현한 완성 프로그램이 아니다. 수명은 핸들 글에서 다룬다.

설정 한 개씩 비교하기

  1. 기준 카탈로그와 content state, 패키지·Player 버전을 보관한다.
  2. 새 실습 빌드에서 한 옵션만 변경한다.
  3. 주소·AssetReference·Label 경로의 성공·실패를 각각 기록한다.
  4. 빌드한 카탈로그 크기와 초기화 구간을 같은 캐시 조건에서 비교한다.
  5. 원래 설정으로 되돌린 뒤 같은 검사를 반복한다.

Built In Data의 Resources·Build Settings Scenes 포함을 끄는 것은 카탈로그의 조회 항목을 줄이는 설정이다. 해당 에셋이 Player에서 자동 제거되는 뜻은 아니다. 직접 참조·Resources·씬의 빌드 포함 여부는 별도로 조사한다. 콘텐츠 카탈로그 문서

Internal Asset Naming 변경은 번들 해시·CRC와 콘텐츠 상태 일관성에 영향을 줄 수 있다. 이미 배포한 Player의 업데이트 과정에 용량만 보고 적용하지 않는다. 새 전체 빌드와 이전 콘텐츠 업데이트의 계약을 구분한다.

실습과 풀이

  1. 주소 로드가 없는 그룹에서 Include Addresses만 끈다. 풀이: GUID와 Label 경로가 유지되는지 확인한다. 빌드 성공만으로 런타임 키가 유효하다고 결론 내리지 않는다.
  2. AssetReference가 있는 상태에서 GUID 옵션을 끈다. 풀이: 실패를 재현할 대상이다. 원복 후 성공을 대조하고 필요한 키를 보존한다. ‘문자열이 길다’는 이유만으로 GUID를 제거하지 않는다.
  3. 압축 후 파일이 작아졌다. 성공인가? 풀이: 파일 크기는 한 지표다. 초기화·메모리·조회 성공을 함께 기록한다. 이번 글에서는 실제 크기 감소량이나 시간은 측정하지 않았다.

확인한 범위

원문 옵션과 공식 문서를 대조해 학습 절차를 만들었다. Unity 컴파일·카탈로그 빌드·키 조회·크기·로드 시간은 미검증이다. 빈 카탈로그 노트들을 추가 성과로 세지 않았다. 글과 예제 구성에 AI를 사용했다.

이어 읽기

전체 학습 순서 · 다음 글: 스크립트와 Addressables 콘텐츠의 버전 호환성

← 글 모아보기