본문 바로가기
Unity

[Unity] 다국어 지원

by Kyoung2 2022. 6. 23.
반응형

유니티 3D 엔진을 개발하면서 여러가지 언어를 지원해야할 때가 생긴다. 

현재 내용은 직접적인 테이블 지정을 통해 현재 언어를 변경할 수 있도록 한다.

단, 구글 스프레드 시트를 통한 언어 지원을 사용하지 않고 직접 언어 번역을 입력할 수 있도록 한다.

유니티 드롭다운을 통한 다국어 지원

 

1. 먼저 유니티 툴에서 Package Manager 탭으로 이동한다.

 

https://docs.unity3d.com/Packages/com.unity.localization@1.0/manual/index.html

 

About Localization | Localization | 1.0.5

About Localization Use the Localization package to configure localization settings for your application. Add support for multiple languages and regional variants, including: String localization: Set different strings to display based on locale. Use the Sma

docs.unity3d.com

2. 패키지 매니저에서 삽입할 Localization 패키지 웹페이지를 검색하여 들어간다.

3. 메뉴에서 Guides/Installation 메뉴로 이동한다.

4. com.unity.localization 이 단어를 복사한다.

 

5. 패키지 매니저로 이동하여 왼쪽상단의 + 버튼을 누르고 Add package from git URL 버튼을 클릭한다.

해당 위치에 이전에 복사한 com.unity.localization 를 붙여넣는다.

 

이러한 과정을 거치고 나면 설치가 완료된다.

 

설치가 완료되면 File/BuildSettings/PlayerSettings 에 Localization 항목이 생성된것을 확인할 수 있다.

 

빨간색으로 표시된 Locale Generator 버튼을 클릭한다.

 

해당 버튼을 클릭하면 위와 같이 지원할 언어의 목록이 표시된다.

지원 언어를 클릭하고 Generate Locales 를 클릭한다.

 

 

TextMeshPro -Text(UGUI)  텍스트를 생성한다.

 

Text 아래 Localize String Event  컴포넌트를 삽입한다.

Create Table Collection을 버튼을 클릭한다.

 

String Table Collection을 Create 한다.

 

Create 버튼을 클릭하면 관련 테이블을 어디에 저장할 것인지 파일탐색기가 표시된다.

알맞은 폴더에 저장하도록 한다.

 

언어에 맞는 내용을 입력하도록 한다. 

키값은 알아볼 수 있도록 정확히 입력하여야 한다.

 

드롭다운을 통해 언어를 변경하기 위해 TextMeshPro Dropdown을 생성한다.

 

public class LanguageDropDownController : MonoBehaviour
{
    public TMP_Dropdown dropdown;

    private IEnumerator Start()
    {
        yield return LocalizationSettings.InitializationOperation;

        dropdown.onValueChanged.AddListener(LocaleSelected);
    }
    public void LocaleSelected(int index)
    {
        LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[dropdown.value];
    }

}

드롭다운 옵션에 해당하는 인덱스를 통해 localization value가 변경될 수 있도록

 LanguageDropDownController.cs 파일을 생성하고 위의 코드를 작성한다.

 

DropDown 컴포넌트에 맵핑하고 테스트한다.

 

간단하게 작성된 다국어 설정 관련 내용이다.

추가적으로 구글스프레드 시트를 통해 자동 언어 번역을 할 수 있도록 지정할 수 있다.

 

처음 플레이 진행시 정상적으로 진행되지 않을 수 있다.

해당 내용은 Addrassable 패키지를 빌드하여야 실행이 가능하다.

 

Window/AssetManagement/addressables/Groups 로 이동한다.

 

Addressables Groups  탭에서 Build/New Build/Default Build Script 를 클릭하면 빌드가 되며

실행할 수 있게 된다.

 

추가

 

런타임 중 Table Collection에서 키를 통해 레퍼런스를 변경하려면

using UnityEngine.Localization.Components;


 public class NotifiyMessageManager : MonoBehaviour
 {
      public GameObject topAreaTxt;
      public LocalizeStringEvent mString;

        public void UpdateString(string value)
        {
            mString.StringReference.SetReference("FirstMessage", value);
        }

  }

위의 UpdateString(string value) 함수를 호출하여 변경할 수 있다

mString.StringReference.SetRefernce("테이블 명", "키 값");

 

 

728x90
반응형

# 로딩 화면 동작 코드(Code) 설정하기
loading