180bpm

Unity3D에서 로컬라이징 기능 쉽게 쓰고 관리하기 본문

Develop/Unity

Unity3D에서 로컬라이징 기능 쉽게 쓰고 관리하기

powdersnow 2015. 6. 5. 16:38

작업하다가 생각나서 노트로 남김. 의식의 흐름이 잔뜩 들어감.







로컬라이징 준비를 하면서, 툴을 직접 만들어 쓰기엔 시간이 모잘라서 에셋을 쓰기로 결정했다.

에셋스토어에 올라온 여러 에셋들중에 제일 괜찮았던건 Smart Localization.


기획자가 쓰기 쉽게 되어있고, 파일 관리가 ResX 파일로 되어서 다른 툴들에서도 읽기 편하고, 제일 중요한건 무료.

https://www.assetstore.unity3d.com/kr/#!/content/7543


오늘 글을 쓰려고 찾아봤더니 유료 버전도 올라왔더라. 기능은 그렇게 차이가 없으니 무료를 써도 무방하다.


간략한 초기화 방법


// 저장된 값 불러오기
    private void LoadLocale()
    {
        // PlayerPrefs에 저장된 값이 있는지 찾는다
        string loc = PlayerPrefs.GetString("locale");
 
        // 빈 값이 아니면
        if (!string.IsNullOrEmpty(loc))
        {
            // SmartLocalization의 언어를 바꿔준다
            SmartLocalization.LanguageManager.Instance.ChangeLanguage(loc);
        }
    }
 
    private void ChangeLocale(string loc)
    {
        // 들어온 값으로 언어를 바꾸고
        SmartLocalization.LanguageManager.Instance.ChangeLanguage(loc);
        // 저장시킴
        PlayerPrefs.SetString("locale", loc);
    }
 
    // 로케일 설정함.
    private void SaveLocale()
    {
        // 현재 값을 가져온다.
        string loc = SmartLocalization.LanguageManager.Instance.LoadedLanguage;
        // 저장
        PlayerPrefs.SetString("locale", loc);
    }



문제는 로컬라이징 데이터가 많으면 많을수록 쓰기가 어려운점.

에디터에서 추가하려면 Root 파일에 키를 추가하고 -> 원하는 언어에 값을 입력하는 방식인데

키를 하나 추가하면 에디터의 리스트뷰를 재정렬시키느랴 엄청 느려진다. 꼼수로 안느려지게 하는 방법이 있긴한데, 그래도 여러개 입력하는덴 어렵긴 마찬가지.


툴에서도 import/export를 지원해주는데 csv로만 익스포트가 되고, 익스포트 된 형식이 엑셀에서 복사해서 바로 붙여넣기 힘들게 되어있어서 계속 고민했었다.


처음엔 비주얼스튜디오에서 ResX 파일을 열어서 붙여넣기 하는 식으로 해봤는데 이게 값이 1000개가 넘어가면 처리가 기하급수적으로 느려진다. 1000개 미만이어도 처리하는데 시간이 많이 걸리고.

이걸 root,en, ko를 만들어야하니 3배의 시간이 더 걸린다.


그래서 다음으로 선택한게 ResX Editor. ResX파일을 바로 읽고 쓸수 있는데 이 프로그램은 import를 했을때 resX파일에 키가 없으면 추가가 되지 않는다. 치명적인 문제였다.



그래서 느려도 VS에서 덮어쓰는식으로 처리하다가 오늘 문득 생각이 나서 VS에서 extension을 검색해봤더니, 있더라.


https://resxresourcemanager.codeplex.com/


읽기 쓰기에 문제 없고, import할 파일에서 키가 추가가 되어도 정상적으로 처리되고, 쓰는 속도도 VS보다 월등히 빠르고.

기획자들도 편하다고 하니. 이걸로 계속 가기로.


스마트 로컬라이징은 회사에서 기부개념으로 구입해달라고 해야겠다.

Comments