- 유니티의 에셋 관리 시스템의 "리소시스 - 에셋 번들 - 어드레서블"로의 발전 과정을 살펴본다 .
- 어드레서블 시스템의 작동 방식에 대해 가볍게 살펴본다 .
[ 유니티의 Asset 관리 ]
1 . Resources
[ 설명 ]
- Unity의 기본 에셋 관리 시스템으로, Resources 폴더에 있는 모든 에셋을 빌드에 포함시킨다 .
[ 장점 ]
- 사용하기 간편하고, 스크립트를 통해 쉽게 에셋을 로드할 수 있다.
[ 단점 ]
- 프로젝트 빌드 크기가 증가한다 .
- 빌드에 포함되는 모든 에셋이 메모리에 로드되기 때문에 메모리 관리가 어렵다.
- 애플리케이션 시작 시간이 길어진다
2 . Asset Bundle
[ 설명 ]
- 에셋을 번들로 묶어 필요시 로컬에서 직접 로딩 / 원격 저장소에서 다운후 로딩이 가능하다 .
[ 장점 ]
- 프로젝트 빌드 크기를 작게 유지 할 수 있다 .
- 메모리를 효율적으로 관리 할 수 있다 .
[ 단점 ]
- 번들의 종속성 ( 같은 마테리얼을 가진 모델이 두개라면 마테리얼은 공유되지 못하고 2개로 존재한다 . )
- 하드 코딩 ( 저장소로부터 에셋번들과 에셋을 각각 '경로'와 '파일명'의 string으로 매칭시키기에 개선 프로그램 필요 )
3 . Addressable
[ 설명 ]
- 기존 에셋번들의 편의성을 개선한 시스템
- 에셋을 주소(address)로 관리하며 필요시 해당 주소를 통해 에셋을 로드한다 .
[ 장점 ]
- 유연하고 강력한 에셋 관리 기능을 제공, 빌드 및 로드 프로세스를 자동화한다.
- 메모리 관리가 효율적이다 .
[ 단점 ]
- 초기 설정과 이해가 다소 복잡하다 .
[ Addressable ]
[ Addressable 에 관하여 ]
어드레서블은 콘텐츠를 빌드하고, 로딩하고 관리하는 시스템이며, 주소를 통해서 관리하기 때문에
Addressable이란 이름으로 불린다.
기존 에셋번들의 편의성을 개선한 시스템이며 , 에셋 번들과의 차이점은 에셋을 저장소로부터 가져오는 방식이다 .
에셋번들은 중개자 없이 경로를 통해 가져왔지만 어드레서블은 address라는 중개자를 통해 가져온다 .
어드레서블의 주된 기능은 로드할 대상이 되는 에셋과 에셋이 로드되는 위치 및 방식을 분리한 것이다 .
모든 에셋에 어드레스를 할당하여 ,위치 상관없이 할당된 어드레스를 이용하여 참조한다 .
즉 , 어드레스를 통한 에셋의 관리 / 로딩 / 빌드를 통합한 것이다 .
[ Addressable를 사용하는 이유 ]
어드레서블은 다음과 같은 장점을 지닌다 .
- 유연성 : 에셋을 호스팅 하는 위치를 유연하게 조절 할 수 있다 . 에셋을 앱과 함께 설치 혹은 다운이 가능하고 코드를 다시 작성하지 않아도 특정 에셋에 액세스 하는 위치의 변경이 자유롭다 .
- 종속성 관리 : 로드하는 에셋의 모든 종속성을 시스템이 자동으로 로드 , 시스템에서 콘텐츠를 반환하기 전 모든 메시 . 셰이더 , 애니메이션등의 기타 에셋을 로드 가능하다 .
- 메모리 관리 : 시스템이 에셋을 언로드 및 로드하고 레퍼런스를 자동으로 계산한다 . Addressable 패키지는 잠재적 메모리 문제를 식별하는 프로파일러 또한 제공한다 .
- 콘텐츠 패킹 : 복잡한 종속성 체인을 매핑 , 이해하기에 에셋을 옮기거나 이름 변경시 효율적으로 에셋 번들을 패키징한다 . 로컬및 원격 배포를 위해 에셋을 준비하여 다운로드 가능한 콘텐츠와 앱 크기 축소를 지원 가능하다 .
이러한 장점이 있기에 어드레서블은 다음과 같은 상황에서 사용하기 좋다 .
- 1 . 대규모 프로젝트에서 메모리를 효율적으로 관리할때 cf ) 어드레서블로 메모리 최적화 하기
- 2 . 서버에서 추가로 에셋 다운로드가 필요한 경우 : 시작 빌드 용량을 줄일때
[ Addressable 참고 사이트 ]
참고
[ Unity - Manual ]
https://docs.unity3d.com/Packages/com.unity.addressables@2.2/manual/index.html
[ Unity - Scripting API ]
https://docs.unity3d.com/Packages/com.unity.addressables@2.2/api/index.html
[ 블로그 - 문서 번역 ]
[ 블로그 - 튜토리얼 ]
https://blog.naver.com/cdw0424/221755856111
[ 블로그 - 어드레서블로 최적화 하기 ]
https://unitysquare.co.kr/growwith/unityblog/webinarView?id=272
'유니티 > Addressable' 카테고리의 다른 글
[ Addressable ] 06 . 콘텐츠 원격으로 배포하기 (0) | 2024.08.01 |
---|---|
[ Addressable ] 05 . Addressable 콘텐츠 업데이트 하기 (2) | 2024.07.19 |
[ Addressable ] 04 . Addressable 콘텐츠 빌드하기 (0) | 2024.07.18 |
[ Addressable ] 03 . Addressable 그룹으로 관리하기 (0) | 2024.07.12 |
[ Addressable ] 02 . Addressable 로 프로젝트 전환하기 (0) | 2024.07.10 |