動画で解説しましたので、詳しくは動画をご参照ください。
動画で使ったソースコードはこんな感じ。
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using TMPro; //TextMeshPro
using Sirenix.OdinInspector; //Odin
using DG.Tweening; //DOTween
public class TestManager : MonoBehaviour
{
public TestLocalizeManager testLocalizeManager;
public enum LanguageState
{
English,
Japanese,
Korean
}
public LanguageState currentLanguageState;
[Header("フォント")]
public TMP_FontAsset fontAsset_System_English_Japanese;
public TMP_FontAsset fontAsset_Quote_English_Japanese;
public TMP_FontAsset fontAsset_System_Korean;
public TMP_FontAsset fontAsset_Quote_Korean;
[Header("テキスト")]
public TextMeshProUGUI testText_SysmteMessage;
public TextMeshProUGUI testText_Quote;
[Header("ローカライザブルフォントを適用するTMPのリスト")]
public List li_UpdateFontAssetTMP_System = new List();
public List li_UpdateFontAssetTMP_Quote = new List();
public void ローカライザブルフォントTMPをセット_システム(TextMeshProUGUI _tmp)
{
//既に登録済みでないかチェック
foreach (TextMeshProUGUI tmpInList in li_UpdateFontAssetTMP_System)
if (_tmp == tmpInList) //既に登録済みだったら、
return; //メソッドを抜ける
//未登録なら追加
li_UpdateFontAssetTMP_System.Add(_tmp);
}
public void ローカライザブルフォントTMPをセット_Quote(TextMeshProUGUI _tmp)
{
//既に登録済みでないかチェック
foreach (TextMeshProUGUI tmpInList in li_UpdateFontAssetTMP_Quote)
if (_tmp == tmpInList) //既に登録済みだったら、
return; //メソッドを抜ける
//未登録なら追加
li_UpdateFontAssetTMP_Quote.Add(_tmp);
}
void リストのTMP全てにフォントをセット(List _tmpList, TMP_FontAsset _fontAsset)
{
foreach (TextMeshProUGUI tmp in _tmpList)
tmp.font = _fontAsset;
}
[Button]
void 二つのTMPをリストにセット()
{
ローカライザブルフォントTMPをセット_システム(testText_SysmteMessage);
ローカライザブルフォントTMPをセット_Quote(testText_Quote);
}
[Button]
void 二つのTMPにテキストをセット()
{
testText_Quote.text = testLocalizeManager.hero_Quote;
testText_SysmteMessage.text = testLocalizeManager.attack_SystemMessage;
}
[Button]
public void 言語を変更(LanguageState _languageState)
{
if (_languageState == LanguageState.English)
{
currentLanguageState = LanguageState.English;
testLocalizeManager.SetEnglish();
リストのTMP全てにフォントをセット(li_UpdateFontAssetTMP_System, fontAsset_System_English_Japanese);
リストのTMP全てにフォントをセット(li_UpdateFontAssetTMP_Quote, fontAsset_Quote_English_Japanese);
}
else if (_languageState == LanguageState.Korean)
{
currentLanguageState = LanguageState.Korean;
testLocalizeManager.SetKorean();
リストのTMP全てにフォントをセット(li_UpdateFontAssetTMP_System, fontAsset_System_Korean);
リストのTMP全てにフォントをセット(li_UpdateFontAssetTMP_Quote, fontAsset_Quote_Korean);
}
else if (_languageState == LanguageState.Japanese)
{
currentLanguageState = LanguageState.Japanese;
testLocalizeManager.SetJapanese();
リストのTMP全てにフォントをセット(li_UpdateFontAssetTMP_System, fontAsset_System_English_Japanese);
リストのTMP全てにフォントをセット(li_UpdateFontAssetTMP_Quote, fontAsset_Quote_English_Japanese);
}
}
}