Print Friendly and PDF

유니티/유니티 이론

[이론] Addressable

나는야 개발자 2025. 6. 15. 12:27
반응형

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