본문 바로가기

유니티/Addressable

[ Addressable ] 06 . 콘텐츠 원격으로 배포하기

[ 학습 흐름 ]
  • Firebase Storage를 활용하여 원격 저장소를 생성한다 .
  • Firebase Storage와 Addressable을 위한 툴을 설치한다 .
  • Addressable의 Remote Profile을 생성한다 .
  • 원격 콘텐츠 빌드후 저장소에 업로드 한다 .

[ 원격 저장소 생성 - Firebase Storage ]

1 . Firebase Storage

[ 원격 저장소 생성하기 ]

https://yeoyeoyeo.tistory.com/category/%EC%9C%A0%EB%8B%88%ED%8B%B0/Firebase

 

'유니티/Firebase' 카테고리의 글 목록

 

yeoyeoyeo.tistory.com

 

- 해당 게시물을 참고하여 원격 저장소로 사용할 Firebase Storage를 생성하자 .


[ Firebase Tools 추가하기 ]

1 . Firebase Tools

[ Firebase Tools ]

- 해당툴은 정적링크 (http://)에 의존하지 않고 , Firebase API를 활용하여 에셋 위치를 동적으로 가져오는 기능을 한다 .

- 즉, Firebase Storage와 Addressable을 같이 쓰는 사람들을 위한 툴 .


[ 프로젝트에 추가하기 ]

- Package Manager의 Add package from git Url을 통해 추가 할 수 있다 .

https://gitlab.com/robinbird-studios/libraries/unity-plugins/firebase-tools.git

- 혹은 Packages - manifest.json의 dependencies에 내용을추가함으로 패키지를 받을 수 있다 .


2 . SetUp 하기

[ Remote Path 구성하기 ]

- Create 를 통해 프로필을 생성한다 . Test와 Release 환경 두가지를 만들었다 .

- Remote 경로는 Custom으로 설정후 LoadPath를 ( Firebase Storage 의 경로 ) / (개발 환경) / [BuildTarget]으로 하였다 . 이때 , BuildTarget은 다중 플랫폼 제공을 위해 설정하였다 .

 

- Firebase Storage의 경로는 Storage에서 확인 가능하다 . (gs로 시작)


[ Remote 그룹 구성하기 ]

 

- Build & Load Paths를 Remote로 설정한다 .

- Asset Bundle Compression은 LZMA 로 설정한다 .

- Asset Bindle Provider는 Firebase AssetBundle Provider 로 설정한다 .

- 이는 어드레서블이 Firebase Storage에서만 로드함을 의미한다 .


[ 스크립트 구성하기 ]

//해당 작업으로 어드레서블이 Firebase Storage에서 직접 데이터를 로드할 수 있게 한다 .
Addressables.ResourceManager.ResourceProviders.Add(new FirebaseStorageAssetBundleProvider());
Addressables.ResourceManager.ResourceProviders.Add(new FirebaseStorageJsonAssetProvider());
Addressables.ResourceManager.ResourceProviders.Add(new FirebaseStorageHashProvider());

// This requires Addressables >=1.75 and can be commented out for lower versions
//어드레서블 시스템 내부 ID 변환 함수를 설정한다 
Addressables.InternalIdTransformFunc += FirebaseAddressablesCache.IdTransformFunc;

- 어드레서블 에셋을 로드하기 전 FirebaseStorage Provider와 Hooks를 AddressableAPI에 추가해야 한다 .

- Firebase Storage 에서 AssetBubdle , Json파일 , 해시파일을 로드하게 어드레서블 시스템을 확장하는 기능을 설정한다 .

- 이로 인해 Firebase Storage에 호스팅된 리소스를 동적으로 로드 , 사용하게 된다 .

FirebaseAddressablesManager.IsFirebaseSetupFinished = true;

- 완료후 다음을 수행한다 . 이제 어드레서블은 원격 에셋을 로드할 수 있다.


[ 빌드 스크립트 구성하기 ]

- AddressableAssetData -DataBuilders에는 빌드 스크립트들이 모여있다 . 해당 경로에 위 파일을 추가한다 .

- Addressable Asset Setting의 Build and Play Mode Scripts에 +버튼으로 Firebase Storage Build를 추가해준다 .

- 모든게 완료된후 빌드가 정상정으로 되었다면 로컬 빌드 경로에 setting.json이 있다 .

- 해당 파일에 m_provider가 FirebaseStorageHashProvider라면 완료된것이다 .


[ 원격 콘텐츠 빌드후 업로드하기 ]

1 . 원격 설정하기

- AddressableAssetData - Assressable Asset Setting를 원격용으로 설정하자 .


[ Profile  설정 ]

 

- 방금 생성한 원격용 프로필로 설정한다 .

 


[ Remote catalog 생성하기 ]

 

- Build Remote catalog를  활성화시키고 , Remote로 패스를 설정한다 .

- 그룹에 대한 원격 세팅은 위에서 한 것을 참고하자 .


2 . 원격 콘텐츠 빌드하기

[ 원격 콘텐츠 빌드 ]

- 그룹창으로 이동 , Firebase Storage 빌드를 실행한다 .

- 프로필에서 설정한 BulidPath에 catalog.json / catalog.hash 와 번들들이 생성되어 있다 .


3 . 원격 콘텐츠 업로드

[ 경로 생성후 업로드 ]

- Profile의 Load Path와 같이 내부에 파일을 생성한다 .

- Test - Android 폴더를 생성하였다 .

- 파일 업로드로 생성된 빌드 아티팩트들을 넣어준다 .

- 이로써 에셋 번들을 다운받기 위한 준비는 끝났다 .