반응형
XUnity.AutoTranslator 이라는 툴은 널리 알려진 유니티 게임 자동 번역 툴이다. (https://github.com/bbepis/XUnity.AutoTranslator)
하지만 이 툴은 모든 게임 자동 번역을 지원하는 것은 아니며 (대부분의 유니티 계열 게임은 사용 가능), 무료로 사용 가능한 번역 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 |