Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9749

UnityEngine.Localizationをスクリプトから呼ぶ

$
0
0
プロ必見!最新ローカライズ機能徹底解説 - Unityステーション という動画をみて、Unity謹製の便利なローカライズツールのことを知りました。 ツールでできることは大変多岐にわたっていて、言語ごとにSpriteやAudioClipの切り替え等もできるようです。 動画中の拡張例はこちらの記事で紹介されています。 現在、ちょうど十数カ国のローカライズに対応したタイトルに関わっているので、早速これを使ってみようということになったのですが、一点だけ、スクリプトから呼ぶことができるのかについて不明だったので調べてみました。 LocalStringTest.cs using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Localization; public class LocalStringTest : MonoBehaviour { [SerializeField] TMPro.TMP_Text m_text = null; [SerializeField] UnityEngine.Localization.Components.LocalizeStringEvent m_stringEvent = null; [SerializeField] UnityEditor.Localization.StringTableCollection m_collection = null; private void Awake() { m_stringEvent.OnUpdateString.AddListener(onUpdate); } void Start() { for(int i=0;i< m_collection.StringTables.Count; ++i) { Debug.Log("Table=" + m_collection.Tables[i].asset.name); IEnumerator<UnityEngine.Localization.Tables.StringTableEntry> values = m_collection.StringTables[i].Values.GetEnumerator(); while (values.MoveNext()) { string str0 = values.Current.Key; Debug.Log("Key,Value=:" + values.Current.Key + ":" + values.Current.Value); } } } void Update(){ } void onUpdate(string _str) { m_text.text = string.Format(_str, "World") +"!!"; } } m_stringEvent はTextMeshProにアタッチしたローカライズ用スクリプト、 m_collection はローカライズ用に作成したテーブルとなります。 ローカライズ用スクリプトやテーブルの作成方法については上記動画を参考にしてください。 実行した結果がこちらです。 テーブルからKey,Valueが取得でき、ローカライズ文字列への変更(OnUpdate())も動的に追加できるのを確認しました。ひとまず最低限これができれば安心して開発に組み込めそうです。 ちなみにビルマ語(ミャンマー語)が表示されていないのは、Unityエディターのフォントがこれらの言語に対応していないためです。 Preferencesなどからもフォント変更はできないようなので、対応していない言語の国のUnityユーザーはどうしているんでしょうね? 経験上、こういう国の人たちは母国語以外に英語等の第二言語がペラペラだったりするので問題ないのかもしれません。

Viewing all articles
Browse latest Browse all 9749

Trending Articles