• Home
  • About
    • KKsDev photo

      KKsDev

      게임 프로그래머를 목표로 Unity, C#을 공부하고 있습니다.

    • Learn More
    • Email
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects

Addressables

06 Nov 2023

Reading time ~2 minutes

nbcbanner

  1. Addressables



Addressables

팀원들과 리소스를 어떻게 효율적으로 관리할 수 있을지에 대해서 고민 하면서

Addressables에 대해서 공부를 해보고 사용을 해보자는 의견을 통해서 Addressables에 대해서 공부한 내용이다.


Addressables 란?

컨텐츠를 빌드, 로드 및 관리하는 시스템으로 모든 동작이 비동기 형태로 구현 되어 있다.

내부적으로 컨텐츠의 Address 라는 개념을 통해서 전체적으로 참조하고 관리를 한다.

리소스 매니저가 포함되어 있는 형태로 런타임 중 리소스를 로드, 언로드 할 수도 있다.

최소 2018.2 이상의 유니티 버전 필요! 빌드 파이프라인을 스크립트를 이용해 관리할 수 있음 (커스텀 가능)


Addressables의 장점

  1. 에셋 패킹과 참조를 분리하여 변경사항을 최소화 한다. -> 큰 게임 에서도 에셋 빌드가 간편하다.
  2. 런타임 중 알아서 의존 관계를 확인해서 리소스를 로드하고 에셋 메모리를 관리 해준다.


Addressables의 사용 준비

  1. Addressables 패키지 설치
  2. Window > Assest Management > Addressables > Groups 에서 Addressables Group을 생성
  3. Asset들의 Inspector 창에서 Addressable을 체크하고, 생성한 그룹에 넣는다.
  4. 에디터에서 컨텐츠를 빌드 Addressables Groups 윈도우에서 Build > New Build > Default Build Script 선택
  5. 3가지 빌드 모드 중 하나를 선택

    Use Asseet Database > Simulate Groups > Use Existing Build 오른쪽에 있을수록 속도는 느리지만 정확한 테스트

Addressables의 사용

  1. Header
    using UnityEngine.AddressableAssets;
    using UnityEngine.ResourceManagement.AsyncOperations;
    


  1. DownloadDependenciesAsync()

Addressables.GetDownloadSizeAsync()로 다운로드 받을 크기를 확인하고 (데이터가 있다면 0보다 큼)

DownloadDependenciesAsync()로 리소스를 다운로드 내부적으로 다운받은 리소스를 캐싱해서 관리 해준다.


  1. LoadAssetAsync()

에셋을 메모리에 로드시킨다. 내부적으로 캐싱 시스템이 구현되 있으므로 따로 캐싱할 필요는 없다.


  1. InstantiateAsync()

해당 프리펩을 사용해서 게임 오브젝트를 생성

  1. ClearDependencyCasheAsync()

다운로드 받은 리소스의 캐쉬를 클리어 호출 전 현재 로드되어 있는 캐쉬를 사용하는 모든 오브젝트를 메모리에서 해제 해야한다.

Addressables 와 Resources 비교

  1. Resources 는 패키지 내에 파일이 포함 되어야 한다.

  2. Resources 폴더에 있는 파일들은 사용 여부와 관계없이 패키징되어 용량에 낭비가 있을수 있다.

  3. Resources 폴더에 파일이 많을 수록 유니티 엔진에서 앱을 처음 구동할 때 지연시간이 증가하게 된다. (파일을 찾는 초기 비용)

  4. Resourece 에서 파일을 로드할 떄 전체 파일을 순회하여 해당하는 파일을 찾기 때문에 비용이 많이 들어간다.

Addressables는 Address를 통해 직접 접근할 수 있기 때문에 성능상에서 이점이 있다.

Addressables 와 Asset bundle 비교

  1. Addressables은 Asset bundle을 내부적으로 사용하며 관리해주는 시스템이다.

참고 자료 : 유튜브 - Unity Korea



nbcthumbnail



TIL내일배움캠프스파르타AssetAddressables Share Tweet +1