본문 바로가기
Works/Unity 3D

[Unity3D] Addressable 특징 메모

by Vader87 2021. 7. 19.
반응형

Addressable 은 Unity 에서 지원해 주는 자산 관리 패키지 이다. 과거 AssetBundle 의 패키지로 지원을 했는데, 이를 확장해 편의성을 높인 패키지 이다.

주요 기능은 Bundle 생성 및 관리이다. Catalog 를 통해 Bundle 의 다운로드 및 관리를 자동으로 해 준다.

Group 이 Bundle 파일 단위가 아니다. Group Setting 의 Bundle Mode 값을 Pack Separately 로 변경 하게 되면 하나의 Group 이 여러개의 Bundle 파일로 나눠지는 것을 알 수 있다.

Asset 의 Download 및 Load 는 Label 과 Addressable Name 단위로 이루어 진다.

기능에 따라 사용한 Handle 을 수동으로 Release 해 주어야 하는 경우가 있다. 문서를 잘 참고해야 한다.

강한 참조(Inspector 연결로 GUID를 가르키는)를 하게 되면 해당 Asset 은 사용하기도 전 부터 Memory 의 공간을 차지하게 된다.

Group 안의 일부 Asset 만 Memory 로 Load 해서 사용하는 것은 가능하지만, Group 안의 일부 Asset 만 Memory 에서 Release 하는 것은 불가능 하다.

InstantiateAsync 는 Addressable 에서 Ref-Count 를 관리해 주어 사용되지 않으면 자동으로 Release 를 시켜준다. LoadAsset(s)Async 를 통해 Instantiate 하는 방식도 가능 하지만 Addressable 에서 Ref-Count 를 관리하지 않기 때문에 Handle 이 Release 되면 참조 오류가 발생한다.

Addressable 에서 Bundle 에는 참조되는 모든 Asset 이 포함되게 된다. 같은 Asset 을 참조하는 Bundle 이 여러개인 경우 각 Bundle 에 중복으로 Asset 이 포함되게 된다. 중복을 해결하기 위한 방법은 2가지로 동일한 Asset 을 사용하는 Bundle 을 하나의 Group 으로 묶거나, 중복되는 Asset 을 Addressalbe 로 명시해 별도의 Bundle 로 생성하는 것이다.

Addressable 에서 중복 Asset 을 자동으로 분류해 Group 화 시켜주는 Anaylize Tool 을 제공한다. 하지만 기본 제공되는 Fix Rule 은 Bundle 을 너무 세분화 시킬 수 있어 Custom Rule 을 사용해 최적화를 시켜주는 것이 좋다.

Addressable 에서 LoadPath 등을 런타임에 결정되는 값으로 사용할 수 있는데, Addressable.Initialize 호출 시 초기화 되고 클라이언트 재시작 전까지는 변경이 불가능 하다.

 

반응형

댓글