やめアプ

会社をやめてアプリ開発者となった筆者の日常を書き連ねていきます。

【Unity】uGUIのテキストを超お手軽に英語対応する方法

私の場合、お手軽なゲームだとuGUIのTextやButtonを使ってすべてのUIを作ってしまいます。Inspectorから文字の入力や修正ができるので楽チンですよね。
f:id:moshimobox:20150820172557p:plain
最近リリースした『金魚育成アプリ』。UIには画像を一切使っていません。

しかし問題になるのがローカライズしたいとき。端末の言語設定はScriptから判定できますが、Scriptから各UIのテキストを書き換えていくのは面倒です。また、日本語の文言はInspectorから設定しているのに、ローカライズ文言はScriptから設定というのも一貫性がなくて嫌ですよね。

というわけで、uGUIのTextをInspectorからお手軽にローカライズできちゃうScriptを作成しました。

[TextLocalizer.cs]

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class TextLocalizer : MonoBehaviour {
    [Multiline]
    public string englishText;
    public int englishFontSize;
    void Start () {
        Text text = GetComponent<Text> ();
        if (Application.systemLanguage != SystemLanguage.Japanese) {
            text.text = englishText;
            if (englishFontSize != 0) {
                text.fontSize = englishFontSize;
            }
        }
    }
}

これをTextコンポーネントが付いてるGameObjectにAddすると、Inspectorからこんな感じで設定ができます。
f:id:moshimobox:20150820172934p:plain
EnglishTextのところに英語の文言を書けます。複数行にも対応。英語にすると文字数が増えてしまうケースも多いですが、English Font Sizeを設定しておけば英語のときだけフォントサイズを変更することもできます。

英語環境で起動すると、こんな感じ。
f:id:moshimobox:20150820172602p:plain
この仕組みを応用すれば英語以外の言語もInspectorから簡単に設定できますし、Spriteの差し替えも簡単に設定できそうですね。

(確認環境:Unity 5.1.1, iPhone5S