스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록

2024.07.11 TIL - 어드레서블 에셋(Addressable Asset)

테크러너 2024. 7. 11.

Resources 폴더

장점

사용하기에 편하다. `Resources.LoadAll` 등 Resources 폴더 안에 에셋들을 코드 한 줄로 불러올 수 있다.

 

단점

1. apk 사이즈가 커진다. `Resources` 폴더에 있는 모든 파일은 게임 빌드에 포함되기 때문이다.

2. 앱 시작 시간이 길어진다. 런타임에 리소스를 로드하기 때문에 디스크 I/O가 발생해서 로딩 시간이 증가할 수 있다.

3. 메모리 최적화 문제가 있다. `Resources.Load` 메서드로 리소스를 로드하면 메모리에 상주하게 되며, 수동으로 해제하지 않으면 메모리 누수가 발생할 수 있다.

4. 플랫폼별 최적화가 불가능하다. 특정 플랫폼에서만 필요한 리소스를 포함하거나 제외하는 등의 최적화가 어렵다. `Resources` 폴더에 있는 모든 파일은 모든 플랫폼 빌드에 포함되기 때문이다.

 

에셋 번들 (Asset Bundles)

앱스토어나 구글스토어에 업로드할 때 파일 용량 제한이 있는데 그 제한된 크기가 너무 작았다.

그래서 그당시에 유니티에서 에셋 번들이라는 기능을 제공해서 그나마 용량을 줄여서 마켓에 업로드할 수 있었다.

 

장점

에셋을 묶음 단위로 관리할 수 있다. 빌드 사이즈가 절감되고, 앱 시작 시간을 단축시킨다.

 

단점

번들의 종속성 문제가 있다. 같은 이미지가 A와 B에 묶여있다면 1개의 이미지가 아닌 2개의 이미지로 인식된다.

 

어드레서블 에셋(Addressable Asset)

이러한 에셋 번들(빌드와 번들의 분리)의 장점과 리소스 폴더의 장점(사용하기 편함)을 가진 것이 어드레서블 에셋이다.

어드레서블 에셋이란 어드레스가 할당된 에셋이다. 주소를 이용하여 에셋 위치에 상관없이 참조가 가능하다.

어드레서블은 에셋번들을 토대로 설계된 시스템이다. 주소를 이용하여 에셋의 관리, 로딩, 빌드가 통합된 시스템이다.

에셋번들의 편의성을 개선하기 위해 등장했으므로 이제 에셋 번들은 집어던지고 어드레서블 에셋으로 갈아타자.

 

장점

1. 동적 로딩 : 에셋을 런타임에 동적으로 로드하고 언로드할 수 있다.

2. 주소 기반 참조 : 에셋을 주소로 참조하여 로드할 수 있다.

3. 빌드 타임 최적화 : 빌드 프로세스 중에 에셋을 최적화하여 패키지화하고, 필요한 에셋만 포함하여 빌드 크기를 줄일 수 있다.

4. 다양한 로딩 방식 지원 : 로컬 또는 원격 서버에서 에셋을 로드할 수 있다. 이를 통해 DLC(다운로드 가능한 콘텐츠)와 같은 기능을 쉽게 구현할 수 있다.

5. 개발 편의성 : 어드레서블 시스템은 유니티 에디터와 통합되어 있어 에셋 관리를 직관적으로 할 수 있다. 에디터에서 어드레서블 그룹을 구성하고, 각 에셋에 주소를 할당할 수 있다.

6. 유연한 에셋 그룹 관리 : 에셋을 그룹으로 묶어서 관리할 수 잇다. 각 그룹은 별도의 로드, 언로드 정책을 가질 수 있으며 이를 통해 로드 성능을 최적화할 수 있다.

 

에셋 그룹이 뭔가? 싶을텐데 아래의 사용법을 살펴보자.

 

어드레서블 에셋 사용법

위의 경로로 들어가면 Groups가 있다.

Groups를 클릭하면 위와 같은 화면이 뜨는데 여기서 Create new Group으로 그룹을 생성해준다.

 

유니티 패키지매니저에서 `Addressable`을 설치하면 `AddressableAssetsData`라는 폴더가 생긴다.

그리고 원하는 폴더를 드래그앤 드롭해서 그룹에 넣어주면 된다. 참고로 `AddressableDatas` 폴더는 직접 만든 폴더다.

이제 저 폴더 안에 에셋을 넣어 관리하면 된다.

 

 

반응형

댓글