Addressable이란?
- Addressable의 주요 기능은 에셋에 주소를 할당하고 런타임에 로드하는 것이다.
- 에셋은 앱에 '빌트인'되거나 '로컬'로 캐싱되거나 '원격'으로 호스팅 될 수 있다.
왜 런타임에 로드하는 것이 주요한가?
- Unity의 Resources파일에 필요 리소스 들을 넣을 경우 앱을 실행할때 전부 로드해버립니다. 하지만 Addressable의 경우 런타임에서 필요할때 불러올 수 있어 앱의 실행 시간이나 메모리를 효율적으로 사용할 수 있습니다.
에셋 주소
- Addressable창에 주소, 카탈로그, 레이어 등 설정이 가능하다
- 고유한 주소를 할당하는 것도 좋지만, 굳이 고유할 필요도 없다.
Addressable 예시
에셋 1: 주소: "plate_armor_rusty", 레이블: "hd"
에셋 2: 주소: "plate_armor_rusty", 레이블: "sd"
- 동일한 주소로 할당되어 있을 경우 LoadAssetAsync와 같이 단일 에셋만 로드하는 Addressables API 메서드는 여러 에셋에 할당된 주소로 호출한 경우 첫 번째로 찾은 인스턴스를 로드 한다.
- LoadAssetsAsync와 같은 기타 메서드는 하나의 작업에 여러 에셋을 로드하고 지정된 주소로 모든 에셋을 로드한다.
AssetReference 사용
- AssetReference는 인스펙터에 직렬화 가능한 AssetReference필드를 추가하여 사용할 리소스들을 할당이 가능하다.
- 할당할 경우 비 어드레서블 에셋들을 AssetReference필드에 할당하여 자동으로 어드러세블 그룹에 추가하는 기능을 가짐
에셋 로드 및 언로드
- 위에서 설명했듯이 Addrssable은 주소를 이용하여 언제든지 원할때 로드가 가능합니다.
- 언로드의 경우도 다르지 않습니다. 특정 경우에 사용 한 후 더 이상 사용할 필요가 없을 경우 언로드를 이용하여 메모리를 확보할 수 있도록 에셋을 해제할 수 있습니다.
- 단 어드레서블 언로드에 따르면 래퍼런스 수가 0일때 해제를 해야한다고 합니다.
종속성 및 리소스 관리
로드할 때:
- Addressable 오브젝트를 로드하면, 그 오브젝트가 사용하는 모든 재료들(Image, Material 등)도 함께 자동으로 로드됩니다
- 다른 프리팹에서도 같은 재료를 사용하고 있다면, 그 재료들도 모두 메모리에 올라갑니다
언로드할때:
- Addressable 오브젝트를 언로드하면, 그 오브젝트가 사용하던 재료들도 함께 언로드됩니다
- 단, 다른 오브젝트가 여전히 그 재료를 사용하고 있다면 재료는 메모리에 남아있습니다
어드레서블 그룹
- 어드레서블 그룹이란 에디터 상에서 그룹 창이 존재하는데 그곳에 에셋을 추가
나머지 내용들은 어드레서블 내용을 참고하면 될듯하다 중요 내용은 위에 정리했음
개인적으로 내용을 정리하며 제일 중요했던 건 앱 실행시 바로 메모리에 할당하는 것이 아닌 원할때 할당하여 사용한다.
'유니티 > 유니티 이론' 카테고리의 다른 글
[이론] 렌더 파이프 라인 (5) | 2025.06.23 |
---|---|
[이론] 에셋 번들 (2) | 2025.06.18 |
[이론] UniTask (3) | 2025.06.12 |
[이론] async/await (0) | 2025.06.11 |
[이론] 코루틴 (0) | 2025.06.11 |