본문 바로가기

관리 메뉴

[Unity] 언어에 따라 폰트 변경하기. Change Font by language 본문

프로그래밍/ㄴ기타

[Unity] 언어에 따라 폰트 변경하기. Change Font by language

최갓 2022. 10. 12. 11:30
반응형

게임을 글로벌에 출시하기 위해 이것저것 언어를 변경하다 보면

일본어, 한자, 혹은 인도네시아어 등등 여러가지 폰트가 깨져 보이는 문제가 발생한다.

 

이로 인해 언어마다 폰트를 다르게 지정해주어야 하는 이슈가 있다.

 

필자는 NGUI를 사용하고 있기에 NGUI를 기준으로 다음과 같이 구현하였다.

 

최초 게임을 실행했을 때 다음과 같이 언어에 따른 폰트 파일을 가져와준다

 

public static Font m_vGlobalFont = null;

...

if (IsGlobalUser())
        {
            eLang = Application.systemLanguage;
            switch (eLang)
            {
                case SystemLanguage.Japanese:
                    if (m_vGlobalFont == null)
                        m_vGlobalFont = Resources.Load("Font/JP_support_font") as Font;
                    break;
                case SystemLanguage.Chinese:
                case SystemLanguage.ChineseTraditional:
                case SystemLanguage.ChineseSimplified:
                    if (m_vGlobalFont == null)
                        m_vGlobalFont = Resources.Load("Font/CN_support_font") as Font;
                    break;
            }
        }

 

이후 UI에서 Label구문을 처리하는 공용 클래스에 다음과 같은 구문을 추가해주었다

public void Start()
{
...

if (Application.isPlaying) //런타임 체크를 하지 않을경우 에디터에서 폰트가 변경된다
		{
			if (IsGlobalUser())
			{
				SystemLanguage eLang = Application.systemLanguage;
				switch (eLang)
				{
					case SystemLanguage.Japanese:
					case SystemLanguage.Chinese:
					case SystemLanguage.ChineseTraditional:
					case SystemLanguage.ChineseSimplified:
						if (G_UIBase.m_vGlobalFont != null)
						{
							if (trueTypeFont != m_vGlobalFont)
								trueTypeFont = m_vGlobalFont;
						}
						break;
				}
			}
		}
        
 ...
 }
반응형
Comments