[Unity] AssetBundle 정리

2024. 3. 28. 17:33Unity

728x90
반응형

AssetBundle

- 선택한 에셋을 포함하기 위해 내보낼 수 있는 파일. 어플리케이션에서 요청 시 로드할 수 있다. 게임의 다양한 콘텐츠를 효율적으로 관리하고 다운로드 크기를 최적화하는 데 도움이 된다.

- 메모리를 효율적으로 관리할 수 있다.

- 초기 인스톨 사이즈를 줄일 수 있다.(스토어에 올리기 위해서는 150MB의 용량 제한이 있다.) -> 모바일에서 유용

 

장점

  1. 자원 관리와 최적화: AssetBundle은 리소스를 패키징하여 런타임에 동적으로 로드하거나 언로드할 수 있으므로 게임의 자원 관리와 최적화에 도움이 된다. 필요한 리소스만 로드하여 메모리 사용량을 줄이고 성능을 향상시킬 수 있다.
  2. 동적 업데이트: 게임 또는 애플리케이션을 런타임에 업데이트하거나 새로운 콘텐츠를 추가할 수 있다. 새로운 AssetBundle을 다운로드하여 이를 적용하거나 이전 버전의 AssetBundle을 삭제할 수 있다.
  3. 크로스 플랫폼 지원: AssetBundle은 크로스 플랫폼에서 사용할 수 있으며, 게임을 여러 플랫폼에 쉽게 배포할 수 있다.

 

단점

  1. 추가적인 작업: AssetBundle을 만들기 위해서는 추가적인 작업이 필요하다. 리소스를 AssetBundle로 패키징하고 관리하는 과정이 필요하며, 이는 개발 및 유지보수 시간을 추가적으로 요구할 수 있다.
  2. 크기 관리: AssetBundle의 크기를 적절히 관리해야 한다. 너무 큰 AssetBundle은 다운로드 시간을 늘릴 수 있고, 사용자에게 부담을 줄 수 있다. 반면에 너무 작은 AssetBundle은 로드 및 언로드 작업이 자주 발생하여 성능에 영향을 줄 수 있다.

 


 

 

매니페스트(Manifest) 파일

manifest 파일은 에셋 번들마다 생성되며 다음의 정보를 포함합니다.

  • 매니페스트 파일은 에셋 번들 바로 옆에 위치합니다.
  • CRC.
  • 에셋 파일 해시. 이 에셋 번들에 포함된 모든 에셋을 위한 단일 해시이며 증분 빌드 체크에만 사용됩니다.
  • 타입 트리 해시. 이 에셋 번들에 포함된 모든 타입을 위한 단일 해시이며 증분 빌드 체크에만 사용됩니다.
  • 클래스 타입. 이 에셋 번들에 포함된 모든 클래스 타입입니다. 타입 트리 증분 빌드 체크를 실행 시 새로운 단일 해시를 가져오는데 사용됩니다.
  • 에셋 이름. 모든 에셋은 명백하게 이 에셋 번들 안에 포함됩니다.
  • 종속 에셋 번들 이름. 이 에셋 번들이 종속하는 모든 에셋 번들입니다.
  • 매니페스트 파일은 증분 빌드할 경우에만 사용되며 런타임에는 필요하지 않습니다.

https://docs.unity3d.com/kr/530/Manual/BuildingAssetBundles.html

 

 


 

 

AssetBundle 압축 방식

LZMA

- Asset을 묶어 하나로 저장한다.

- 많은 압축, 하지만 비효율적이다.

- 1번들 1에셋에 적합하다.

 

LZ4

- Asset을 여러 덩어리로 나눠서 저장한다.

- 권장되는 옵션이다.

 

 


 

 

최적의 AssetBundle 개수

AssetBundle 수가 적을 경우

- Header가 커져 전부 메모리에 올라가기 때문에 실행 시 메모리 사용량 증가

- 다운로드 양이 증가하므로 업데이트에 좋지 않다.

 

AssetBundle 수가 많을 경우

- 빌드할 때 Bundle을 모두 검사하기 때문에 시간이 증가

- 에셋들이 흩어져있을 경우 Bundle의 Dependency를 생각해야 하기 때문에 개발이 어려워진다.

- 추가적인 오버헤드 정보들이 많아져서 전체 사이즈가 커지고 다운로드 시간이 증가한다.

 

 

AssetBundle에 각각 들어갈 에셋들의 그룹화 팁에 대해서는 아래 글에 잘 나와있다.

https://young-94.tistory.com/11

 

Unity AssetBundle 기본 개념

+ 저는 지금 2020 이상 버전을 사용 중인데 2018.2 이상 버전부터는 에셋 번들 관리자의 지원이 중단되었다고 합니다. 결국 Addressable asset system을 사용해야 하는데 asset bundle의 개념이 머리에 어느 정

young-94.tistory.com

*AssetBundle의 Memory Profiling은 에디터에서 하는 건 의미가 없고 타겟 기기에서 봐야 한다.

728x90
반응형