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 호출 시 초기화 되고 클라이언트 재시작 전까지는 변경이 불가능 하다.
'Works > Unity 3D' 카테고리의 다른 글
SoulLike 만들기 (3) -Postprocessing (0) | 2021.08.22 |
---|---|
SoulLike 만들기 (2) - 자연스러운 플레이어 움직임 (Animation Blend) (0) | 2021.08.21 |
[Unity] OpenUPM - Custom Package 만들기 (0) | 2021.05.02 |
Unity C# DLL (0) | 2021.05.02 |
[Unity] 프로젝트 Git 설정 (0) | 2021.02.02 |
댓글