1. Addressable이란?
- 유니티에서 제공하는 비동기 에셋 관리 시스템
- 에셋을 주소를 통해 런타임에 동적으로 로드/언로드 할 수 있도록 해주는 기능
2. Addressable을 쓰는 이유?
1) Resource 단점
- Resource 폴더는 에셋을 빌드 시 전부 포함시켜 로드하므로 용량을 관리를 하지 못하면 스토어에 제한이 걸릴 수 있음
- 프로젝트 빌드 크기 증가
- 프로젝트 초기 실행 시간 증가
- 일부 불필요한 에셋도 전부 빌드 하기 때문에 과도한 메모리를 사용으로 비효율적
2) 에셋 번들 단점
- 에셋의 경로를 매핑해 두지 않으면 서버데이터 스크립터블 오브젝트에 경로를 담아 사용해야하는 추가 작업이 필요
- 추가 작업 없이 사용한다면 경로에 대한 부분을 하드 코딩으로 처리해야 되는 우려 사항이 있음
3) Addressabkes의 장점
- 주소 기반 로딩 : 이름이나 Label로 에셋을 로드 가능
- 비동기 로딩 : LoadAsync를 통해 필요한 순간에 로딩(메모리 최적화에 좋음)
- 메모리 관리 : Release()를 통해 로드한 에셋을 메모리에서 제거 가능
- 빌드 및 배포 분리 : 원격 서버/CDN에서 에셋을 따로 배포 가능
- 라벨 기반 그룹 로딩 : 여러 에셋을 하나의 Label로 묶어 일괄 로딩 가능
- 에디터 도구 지원 : Addressables Groups UI로 에셋 관리 편함
3. Addressables 기본 구조
1) Address
- 각각의 에셋에 부여하는 고유 이름(기본은 경로 기반 이름, 수정 가능)
- 코드에서 이름으로 로드 가능
Addressables.LoadAssetAsync<GameObject>("MyPrefabAddress");
2) Label
- Label로 묶인 에셋을 한 번에 로드 가능
Addressables.LoadAssetsAsync<GameObject>("MyLabel", obj => { });
3) Group
- Addressables 창에서 에셋을 묶는 단위
- 빌드 설정, 번들링 등을 조절 할 수 있지만, 그룹 이름으로 직접 로드는 불가능
3. Addressables 주요 용어 및 기능
- Build
- New Build > Default Build Script : 에디터에서 컨텐츠를 빌드하는 방법
- Update a Previous Build : 변경된 항복만 다시 빌드
- Clean Build : 빌드에 넣은 번들을 모두 지우고 새로 세팅하고 싶을 때 사용
- API 함수를 사용하여 컨텐츠를 빌드하려면
- AddressableAssetSettings, BuilldPlayerContent()를 사용
- Play Mode Script
- Use Asset DataBase : 에디터 기반에서만 동작하는 모드, 런타임과 다소 차이가 있을 수 있음
- Simulate Groups : 이걸로 테스트가 필요함, 어드래스 기능에 대한 테스트, 실제 번들을 이용하는 방식은 아님
- Use Existing Build : 릴리즈와 동일한 환경에서 테스트, 리모트 환경에 대한 테스트가 동시에 이루어짐, 최종
- Headers
- DownLoadDependenciesAsync
- 서버에서 다운로드
- LoadAssetAsync
- 에셋을 메모리에 로드를 하는 함수
- 내부에 캐싱 시스템이 있다
- InstantiateAsync
- 로드된 게임오븢젝트를 생성시켜주는 함수
- ClearDepencyCacheAsync
4. Addressables 사용 - Remote
- Window > Asset Management > Addressables > Hosting
- 핫스팟에서 쓰기 어려움
- Disable Catalog Update : 사용자에게 업데이트를 할지 확인 받고 업데이트를 한다면 체크 아니면 체크 해제
- Build Remote Catalog : 체크 필수
- Unique Bundle IDs : 체크 필수
- Build Path/Load Path : Remote 주소 확인용
'유니티 공부' 카테고리의 다른 글
UI Toolkit (0) | 2025.06.29 |
---|---|
Object Pooling (2) | 2025.06.09 |
유니티 게임 WebGL 빌드 하기 (0) | 2025.06.06 |
Update, FixedUpdate, LateUpdate의 차이점 (1) | 2025.04.24 |
UI - MVC, MVP, MVVM 패턴 (0) | 2025.03.19 |