본문 바로가기
한글화

[개발일지] 유니티(Unity) 게임 한글 폰트 적용

by 레이슈 2024. 4. 12.
반응형

XUnity.AutoTranslator 이라는 툴은 널리 알려진 유니티 게임 자동 번역 툴이다. (https://github.com/bbepis/XUnity.AutoTranslator)

 

GitHub - bbepis/XUnity.AutoTranslator

Contribute to bbepis/XUnity.AutoTranslator development by creating an account on GitHub.

github.com

하지만 이 툴은 모든 게임 자동 번역을 지원하는 것은 아니며 (대부분의 유니티 계열 게임은 사용 가능), 무료로 사용 가능한 번역 API 를 적용하기 때문에 (GoogleTranslator, 파파고, DeepL 등), 게임하기에 매우 거슬리다. 영어나 일어 기반의 게임은 모르겠지만, 중국어는 꽤나 거슬림.

하지만 강력한 기능이 하나 있는데, 게임 내 폰트를 교체할 수 있다.
그래서 보통 한글 모드를 배포할 때, 이 툴을 그대로 활용하면서 배포하곤 했었는데..
이번 게임 번역 작업을 하면서 폰트도 직접 교체하는 방식을 차용해서 개발 일지에 기록하였다.
아마 차기 게임 번역 모드 제작 시 템플릿으로 사용할 듯

코드 내용 및 설명

public static TMP_FontAsset transFont = null;

public static void LoadFont(string fontFile)
{
    string path = TransPatch.baseFolderPath + fontFile;
    if (File.Exists(path))
    {
        log.LogMessage("LoadFont::" + path);
        var allAssets = AssetBundle.LoadFromFile(path).LoadAllAssets();
        foreach (var asset in allAssets)
        {
            var TryCastFontAsset = asset.TryCast<TMP_FontAsset>();
            if (TryCastFontAsset)
            {
                UnityEngine.Object.DontDestroyOnLoad(TryCastFontAsset);
                TryCastFontAsset.hideFlags |= HideFlags.HideAndDontSave;
                transFont = TryCastFontAsset;
                log.LogMessage("LoadFontAsset::" + TryCastFontAsset.name);
                TMP_Settings.fallbackFontAssets.Add(transFont); // 핵심 부분
            }
        }
    }
    log.LogMessage("LoadFontAsset::Finish");
}

한글을 지원하는 폰트 파일을 받아서 해당 함수에 넣으면, 
유니티에서 사용하는 폰트인 TMP_FontAsset 를 생성하고, 기본 fallbackFontAsset 에 추가해주면 된다.
Fallback Font 설명은 공식 페이지 참고(https://docs.unity3d.com/kr/2022.1/Manual/UIE-fallback-font.html)

기본 폰트 자체를 변경하는 방법도 있지만, 이쁜이 작업을 위한 용도가 아니므로 개발 및 설명은 패스..

'한글화' 카테고리의 다른 글

안성탕면체 TMP 폰트  (2) 2024.10.06
BepInEx 6 - 667+ Mono 에서 동작하는 자동번역기  (0) 2024.08.06
Fantasy General 2 한글패치  (6) 2024.07.14
번역 Gemini 1.5 Pro 사용기  (0) 2024.04.28
번역 라마3 사용기  (0) 2024.04.26