Unity/프레임워크 / / 2026. 1. 1. 05:19

[Unity] Localization Remote load

반응형

Addressables와 AWS S3를 통해 다국어 지원관련 데이터를 서버에 업로드하고, 사용자가 원격으로 다운로드 받아 진행할 수 있도록 처리합니다.

 

이러한 방식을 사용하는 이유는, 앱스토어에 앱을 업데이트 하지 않고 핫픽스를 통해 문제를 해결할 수 있기 때문입니다.

 

로컬라이즈 작업을 모두 마쳤다는 가정 하에 원격 로드 처리를 하겠습니다.

 

https://kabu0129.tistory.com/396

 

[Unity] Localization : 다국어 지원 시스템

게임을 출시할 때, 하나의 언어만 지원하지 않고 현지화 전략으로 해당 지역에 맞게 언어를 지원하는 시스템이 있습니다.영미권 국가에서는 영어로, 한국에서는 한국어로, 일본에서는 일본어로

kabu0129.tistory.com

 

 

1. Addressables Group에서 Localization 관련 데이터를 클릭하여 인스펙터 창을 엽니다.

 

모두 빌드&로드 경로를 로컬이 아닌 원격(Remote)으로 변경해줍니다.

 

 

2. Labels를 모두 채워넣습니다.

Addressables는 key값으로 Labels를 사용하기 때문에 공란으로 두지 않습니다. 

다국어 지원 관련 공용 데이터는 "Lcale", 현지 언어라면 "Locale-지역코드"로 레이블을 채웁니다.

 

Shared Data는 특정 현지에 국한된 데이터가 아니므로 Locale 레이블로 지정합니다.

 

 

3. Play Mode Script를 테스트할 빌드 플랫폼에 맞게 변경 후 빌드합니다.

 

 

 

4. 스크립트로 가서 로컬라이즈 파일을 원격으로 빌드할 수 있게 코드를 추가합니다.

 

먼저 로드할 레이블을 먼저 정의합니다.

 

리소스를 로드할 위치(주로 Title Scene)에서 로드할 데이터의 key 값을 저장합니다.

아래 코드에서는 다운로드 용량을 먼저 확인하고 groupsToDownloaded List에 string key 값(Labels)을 저장했습니다.

 

Addressables.DownloadDependenciesAsync에 Labels 값을 넣어 해당 레이블 리소스를 모두 원격 서버로부터 로드합니다.

로드가 성공적으로 끝났다면, 반드시 핸들을 Release하여 메모리 누수가 발생하지 않게 합니다.

 

 

 

5. 파일 탐색기에서 프로젝트 폴더 - ServerData 에 있는 리소스 애셋 번들을 체크합니다.

여기서 반드시 카탈로그(catalog) 파일 .hash와 .json이 수정되었는지 확인해야 합니다.

 

 

6. 원격 서버에서 기존 데이터를 삭제해줍니다.

 

저는 AWS S3에서 관리하므로 S3 기준으로 설명합니다.

 

수정사항이 있는 리소스만 삭제합니다.

 

 

7. 원격 서버에 신규 리소스 애셋 번들을 업로드합니다.

 

업로드가 성공적으로 되었으면

 

 

8. CloudFront에서 무효화 작업을 수행합니다.

무효화 생성을 통해 여러 서버에 있는(Edge Location Servers) 기존 캐시를 모두 폐기하고 방금 S3에 올린 리소스 데이터로 갱신해줍니다.

 

방금 리소스를 업로드한 S3 폴더는 /Android 폴더이므로 해당 폴더의 데이터를 모두 날려줍니다.

성공했다면, 이제 캐시 데이터가 없으므로 즉시 S3에서 다시 파일을 가져옵니다.

이로써 원격 서버는 방금 업로드한 최신 애셋을 배포할 준비가 끝납니다.

 

 

 

9. 에디터에서 빌드 테스트를 수행합니다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유