inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Lập trình hệ thống Unity Pt.2 - Gói tất cả trong một về các hệ thống cốt lõi để hiện thực hóa trò chơi thương mại

Hệ thống hỗ trợ đa ngôn ngữ sử dụng Localize Asset Pt.1 (LanguageUI, SettingsUI, UserSettingsData, TitleManager, SceneLoader, GlobalDefine)

로컬라이즈 어셋 각 언어별 폰트적용

Đã giải quyết

548

personal account

3 câu hỏi đã được viết

0

안녕하세요. Part1부터 수강중인 학생입니다!
수업 잘 듣고 있습니다.
로컬라이즈 어셋을 활용한 다국어 지원 시스템에서 각 언어마다 font를 다르게 지정할 수 있는 방법이 있나요?
구글링과 gpt를 사용하여 검색을 해보았지만 처리하기 어려워 질문을 남깁니다!

C# unity 객체지향

Câu trả lời 2

1

burningcarrot

안녕하세요! BurningCarrot입니다. 문의해 주신 내용에 답변 드립니다.

유니티가 제공하는 Localized Property Variants 기능을 통해 구현할 수 있는 것 같긴 합니다만, 약간 복잡하다고 생각하실 수 있을 것 같아 아래 자체적으로 구현한 방법을 알려드리니 적용해 보시기 바랍니다.

https://docs.unity3d.com/Packages/com.unity.localization@1.4/manual/LocalizedPropertyVariants.html

 

UIManager.cs에 폰트 어셋 변수 선언 후 Inspector에서 언어별 폰트 지정

public class UIManager : SingletonBehaviour<UIManager>
{
    //..(중략)..
    public TMP_FontAsset DefaultFont;
    public TMP_FontAsset EnglishFont;
    public TMP_FontAsset KoreanFont;
    //..(중략)..
}

TextMeshProUGUI 컴포넌트가 있는 오브젝트에 UILocalizationFontHandler 컴포넌트 추가

using TMPro;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;

[RequireComponent(typeof(TextMeshProUGUI))]
public class UILocalizationFontHandler : MonoBehaviour
{
    private TextMeshProUGUI m_TextComponent;

    void Awake()
    {
        m_TextComponent = GetComponent<TextMeshProUGUI>();
    }

    void OnEnable()
    {
        SetFontAsset();
    }

    void SetFontAsset()
    {
        Locale currentLocale = LocalizationSettings.SelectedLocale;
        TMP_FontAsset selectedFont = UIManager.Instance.DefaultFont;

        switch (currentLocale.Identifier.Code)
        {
            case "ko":
                selectedFont = UIManager.Instance.KoreanFont;
                break;
            case "en":
                selectedFont = UIManager.Instance.EnglishFont;
                break;
            default:
                break;
        }

        if(m_TextComponent.font != selectedFont)
        {
            m_TextComponent.font = selectedFont;
        }
    }
}

 

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. personal account님.

유니티에서 로컬라이제이션을 사용하여 다국어 지원 시스템에 각 언어마다 다른 폰트를 적용하는 방법은 다음과 같이 진행할 수 있습니다.

  1. 로컬라이제이션 테이블 설정: 각 언어에 대한 별도의 로컬라이제이션 테이블을 생성합니다. 이 테이블은 언어별 텍스트 뿐만 아니라 폰트 정보를 포함할 수 있습니다.

  2. 스크립트에서 폰트 변경: 로컬라이제이션이 변경될 때 해당 언어에 맞는 폰트를 적용하도록 스크립트를 작성합니다. 이를 위해 TextMeshPro 등과 같은 유니티의 UI 텍스트 컴포넌트를 활용하세요.

   using UnityEngine;
   using TMPro;

   public class LocalizeFont : MonoBehaviour
   {
       public TextMeshProUGUI textMeshPro;
       public Font fontForEnglish;
       public Font fontForKorean;
       
       public void OnLanguageChanged(string language)
       {
           if (language == "English")
           {
               textMeshPro.font = fontForEnglish;
           }
           else if (language == "Korean")
           {
               textMeshPro.font = fontForKorean;
           }
           // 다른 언어에 대해서도 동일하게 설정
       }
   }
  1. 로케일 변경 이벤트에 대응: 로컬라이제이션 시스템에서 제공하는 이벤트를 활용하여 언어 변경 시 폰트도 자동으로 변경되게 설정합니다.

관련된 추가 정보는 다음의 게시물을 참조하실 수 있습니다:

이 방법들은 다국어 게임 개발 시 폰트를 언어에 맞춰 효율적으로 관리할 수 있게 도와줍니다. 궁금한 점이나 추가 질문 있으시면 언제든지 말씀해 주세요!

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

[인앱결제] 질문

0

83

2

Firebase iOS 빌드 시 중복심볼

0

110

2

인앱결제 버전 업데이트된 버전이 강의에 반영되어있을까요?

0

76

2

인앱결제 버전 변경에 따른 질문

0

143

3

파이어베이스 이벤트 로그 수집관련 질문입니다.

0

90

1

파이어베이스 관련 질문입니다.

0

93

2

사전 등록 관련 재질문

0

65

1

구글 플레이 콘솔 사전 예약 등록에 대해.

0

183

2

우편 기능에 대해 궁금합니다.

0

97

2

41-원격 리소스 다운로드 강의의 후반에 실습할 텍스쳐가 없습니다.

0

78

2

로컬 알림과 다국어 지원에 대해 궁금합니다.

0

90

2

통합 에셋

0

72

2

구글 AD 미디에이션

0

184

2

구글로그인 인증 에러 문제 살려주세요 ㅠㅠ

0

178

2

18 유저 데이터 온라인DB 로드 및 저장 PT4의 UserInventoryData 클래스에 대하여

0

69

1

스팀 어드레서블

0

115

1

이미 리소스 다운받은 후 다시 실행시 리소스 인식 문제

0

127

2

강의 : Addressables를 활용한 어셋 관리 및 로딩 처리 문의

0

229

2

세계 시간 API 서버 이슈로 대체할만한 API 아시는분 계신가요?

0

626

2

안녕하세요 구글로그인 SDK 적용하고 빌드문제가있어 질문드립니다.

0

767

4

LogViewer 설치 시 Warning 로그

0

207

1

구매 환불 처리 과정

0

252

2

열심히 보고있습니다!

0

155

2

자막이 누락된 강의에 자막 추가해 주실 수 있을까요?

0

154

1