[유니티] Localization 패키지 도입 중

sobokii·2024년 4월 16일
0

유니티

목록 보기
10/11

0. 문제인식

로컬라이제이션 작업을 효율적으로 하기 위해 방법을 찾던 중,
패키지로 지원하고 있다는 것을 알게되었다.

1. 해결과정

패키지 사용 위해 2021.3 버전으로 마이그레이션도 단행
스프레드 시트에서 아래와 같은 column을 만들고 데이터를 입력하면 된다.

그리고 Window - Asset Management - Localization table 에서 언어를 추가한뒤 (더 추가할 언어가 있다면 더 해도 된다!)
스프레드시트에서 가져온 csv데이터를 import해준다.

Smart 기능을 체크하면 변수를 넣어서 쓰는 것도 가능하다고 함

이후에는 로컬라이징이 필요한 부분에 가서 Localize 기능을 추가한다.
나는 TextMeshPro에 가서 오른쪽 점 3개를 누른 뒤 Localize를 선택해서 추가해주었다.
(Text뿐만 아니라 이미지같은 Asset들도 로컬라이징이 가능하다.)

그리고 코드에서 데이터를 불러와서 세팅해주는 부분을 넣어준다.

    public LocalizedString trainCarNameLocalized;
    
     private void UpdateUI()
    {
        trainCarNameLocalized.TableReference = "LocalizationData"; // 여기서 "TrainCarTable"은 스트링 테이블의 이름
        trainCarNameLocalized.TableEntryReference = $"train_{trainCarId}_name";
        trainCarNameLocalized.StringChanged += UpdateTrainCarName;
    }
    
     // 로컬라이즈된 기차 이름으로 UI를 업데이트하는 콜백 메서드
    private void UpdateTrainCarName(string translatedName)
    {
        trainCarIdText.text = translatedName;
        trainCarNameLocalized.StringChanged -= UpdateTrainCarName; // 이벤트에서 메서드를 해제
    }

물론 현재는 언어 변경 기능을 만들지 않아서 언어는 변경되지 않고 있지만,
텍스트 데이터값을 불러와서 세팅해주는 것은 성공!

Localization 패키지 자체적으로 StringChanged 이벤트를 잘 구현해두어서
나는 적절한 콜백 메서드를 전달해주기만 하면 된다.

profile
직장 구하고 있습니다.

0개의 댓글