유니티 I2Localization GlobalParameters기능을 사용하여 특정 Param을 런타임에 정하게 하기

Global Param을 사용하는 이유

Global Param사용하기

 

Global Param을 사용하지 않고 다국어를 번역하게 될 경우 글씨 위치가 맞지 않아 불편함을 겪게 됩니다. 예를 들면 아래와 같습니다. 

 

[한국어의 경우] 발견된 이상 개수 :                         7
[영어의 경우   ] Total Number Of Anomalies : 7

 

위와 같이 글씨 위치가 맞지 않게 되는 문제가 있었습니다.

 

그래서 7의 경우 발견된 이상 현상의 개수이므로 해당 Value를 Param으로 지정해주었습니다.

 

Param을 컨트롤 하는 방법은 Local과 Global이 있습니다.


Local로 Param 컨트롤하기

Local

Local의 경우 위와 같이 미리 컴포넌트를 이용해서 특정 Param을 컨트롤 할 수 있습니다.

 


Global로 Param 컨트롤하기

Global

Global로 Param을 컨트롤하기 위해서는 스크립트를 따로 제작해주어야 합니다. 

또한, I2 Localize 컴포넌트에 {[ ... ]} 형식으로 맞춰주어야 합니다.

using I2.Loc;

namespace IMP
{
    public class GlobalParametersForReport : RegisterGlobalParameters
    {
        public  override string GetParameterValue( string ParamName )
        {
            if (ParamName == "TotalText")
                return AnomalyReports.AnomalyReport.TotalAnomalies.ToString();           
            
            if (ParamName == "DiscoveredCount")
                return AnomalyReports.AnomalyReport.DiscoveredCount.ToString();

            if (ParamName == "RemainingCount")
                return AnomalyReports.AnomalyReport.RemainingCount.ToString();

            return null;
        }
    }
}

 

RegisterGlobalParameters 인터페이스를 상속받아야 하며, GetParameterValue함수를 오버라이딩해줍니다.

ParamName의 경우 런타임에서 번역할 Param들을 적으면 됩니다. 

 


 

유니티 가장 강력한 번역도구 I2 Localization을 소개합니다!

I2 Localization란? Unity에서 사용할 수 있는 번역 시스템입니다. UI, 2D, TextMesh Pro와 같은 주요 컴포넌트들에 사용가능하며 개발자가 다양한 플랫폼(PC, 모바일 등)에서 로컬화(번역)된 경험을 제공할

wlsdn629.tistory.com

 

해당 에셋을 이용해서 번역을 쉽게 해보는 것은 어떠신가요?