Unity/Unity 리서치

[Addressable] Update 과정

lipnus 2022. 2. 26. 17:26
반응형

* Addressable 버전: 1.19.18

 

업데이트 전 상태

프로젝트 폴더/ServerData/Android

uiassets Bundle은 3개나 있음. 변경사항이 있을 경우 새로 생긴다. 

빨간색이 최신 Bundle이며, 파란색은 이전 Budle이다. 빨간색만 있으면 얘들은 필요없다. (수정날짜 참고)

 

catalog_1.json을 보면 최신 번들인 빨간색 번들만 등록되어 있다.

변경 전의 catalog_1.hash의 값은 88f2b076515f861eb457dae76a5fe585 이다.

 

 

업데이트 및 빌드

테스트를 위해 uiaseets그룹의 prefab하나를 변경. (빨갛게 만들어버림)

저장하고 Build.

 

Update a Previous Build

 

빌드 후의 상태

기존 파란색 대신 빨간색 번들이 하나 생겼다. 여기에 변경사항이 적용되어 있을것이다.

catalog_1.hash와 catalog_1.json파일도 새로 바뀌었다.

 

catalog_1.json에서 uiassets번들 경로는 새로 생긴 경로로 바뀌었다.

(서버에는 아직 안올렸으므로 저 경로에는 아무것도 없다. 카탈로그 파일도 서버에 안올렸으니 상관은 없음)

 

catalog_1.hash값도 새로 변경되었다.

88f2b076515f861eb457dae76a5fe585 -> 19c0f13ad6ebe5d71578098bf449f87e

 

 

서버업로드

변경된 파일 3개를 서버에 업로드

[내 PC] 이 3개파일이 변경됨. 업데이트 경로에 업로드함.

 

[서버 Storage] 3개 파일이 업로드. (날짜 참고)

 

적용 확인

    private void GetServerBundleSize()
    { 
        Addressables.GetDownloadSizeAsync(assetLabel.labelString).Completed +=
            (AsyncOperationHandle<long> SizeHandle) =>
            {
                OnGetServerBundleSize(SizeHandle.Result);
                Addressables.Release(SizeHandle);
            };
    }

    private void OnGetServerBundleSize(long size)
    { 
        string sizeText = string.Concat(size, " byte");

        if(size == 0) {
            LoadLoginScene();
        }else { 
            DownloadBundle();
        }
    }

    private void DownloadBundle()
    {
        downloadHandle = Addressables.DownloadDependenciesAsync(assetLabel.labelString);
        StartCoroutine(ShowProgress());

        downloadHandle.Completed +=
            (AsyncOperationHandle Handle) =>
            {
                OnFinishDownloadBundle();
                Addressables.Release(Handle);
            };
    }

위 코드를 통해 uiassets 번들만 업로드 되었음.

 

(Phone화면) 게임에 변경사항 정상적용

 

업데이트가 제대로 안될 때 (GetDownloadSizeAsync == 0)

catalog json파일이 제대로 안 올라간 경우가 있음. (서버문제 혹은 개개인의 캐쉬 문제)

분명 덮어쓰기를 해서 업로드 했지만, 경로를 열어보면 예전 이전 텍스트가 그대로 남아있다.

이 경우 업데이트가 제대로 안됨. 

 

catalog의 json과 hash파일이 제대로 바뀌었는지 확인해본다.

 

반응형