Unityアプリのローカライズー日本語・英語対応
制作した「Puzzle DE Tower」は、もともと「初めて作るアプリなんだから、やれることは一通りやっておこう」、ということで始めたもの。そのやっておこうと考えていた中の1つが多言語対応でした(ただ、今回取り入れた方法は、はっきりいって、非常に泥臭く参考にならない点が多いと思いますが、、、)。
ちょっと調べてみるとUnity(uGUIを使用)のみで対応するには、自前(スクリプト)対応するしかないらしく、どうしたものかなぁ、、、、と、しばし悩む。しかし、悩んだところで経験も知識もないんだから、時間の無駄ってことで力技で解決に向けて突き進む事に決定。
とにかく、メニューのボタンやテキストフィールドの中身を、言語に応じて片っ端から書き換えていくようにします。
- 使用フォント
- フォントサイズ
- テキスト
1つのオブジェクトで書き換える内容は、上記の3要素でした。「Puzzle DE Tower」では、それほど数は多くないから大丈夫と思っていたら、やはり追加や削除、変更するためにいちいちスクリプトを変更するのは面倒でした。そこで、見つけたのがエクセルシートを読み込んでうみゃうにゃできるライブラリ。
TextField | EnSize | EnFont | EnText | JpText | JpFont | JpSize |
UseBallPanel3Text | 100 | NewRocker-Regular | Kind of Used Ball | 使用するボールの種類 | mplus-1c-heavy | 75 |
UseBallPanel4Text | 100 | NewRocker-Regular | Kind of Used Ball | 使用するボールの種類 | mplus-1c-heavy | 75 |
UseBallPanel5Text | 100 | NewRocker-Regular | Kind of Used Ball | 使用するボールの種類 | mplus-1c-heavy | 75 |
MenuButtonText | 70 | NewRocker-Regular | MENU | メニュー | mplus-1c-heavy | 60 |
SelectBackButtonText | 60 | NewRocker-Regular | Back | 戻る | mplus-1c-heavy | 55 |
SelectStartButtonText | 60 | NewRocker-Regular | Start | 開始! | mplus-1c-heavy | 55 |
上記のように、
- テキストフィールドオブジェクト名
- 英語データ(フォントサイズ、使用フォント、英語テキスト)
- 日本語データ(フォントサイズ、使用フォント、日本語テキスト)
ずらずらとデータを並べ、あとは、Unity内でデータを読み込んでから、シーンが切り替わったとき、TextFieldにあるオブジェクトに対して機械的に情報を入れ替えるだけ(特に並びが重要でなかったので規則性のない並びになってます) 。
これで、あらかじめシーンに置かれているメニュー系はばっちり。
オプション画面比較
次に画像化された文字ですが、使用されていた数も少なく、Clearとか単純な単語ばかり。テクスチャのデータも削減したかった事もあり、わかってくれよ!と割り切って非対応にしました。
非対応例
それでも、ゲームスタート前の初期設定では、さすがにないと不親切だろうということで、苦肉の策として、日本語のときにはテキストを付加することにしました(画像データを用意するより格段にコストが少ないので)。
あと残っているのは、アプリ内で生成される文字列やオブジェクトに対しての対応です。ここはもう、該当するスクリプトで必要に応じて随時書き換えるようにしています。
正直、こんな方法をやらなくてもiOSやAndroidの開発系のサイトをちゃんと読んで理解すればスマートで正しい方法があます。今回は、とりあえずなんとかすることが目的だったので、これでよし。次の時にはがんばろう。うん。