読者です 読者をやめる 読者になる 読者になる

エディトリアルデザイナーのアプリ制作日記

Unityで遊ぶ個人開発者のメモ書き

Unityアプリのローカライズー日本語・英語対応

 制作した「Puzzle DE Tower」は、もともと「初めて作るアプリなんだから、やれることは一通りやっておこう」、ということで始めたもの。そのやっておこうと考えていた中の1つが多言語対応でした(ただ、今回取り入れた方法は、はっきりいって、非常に泥臭く参考にならない点が多いと思いますが、、、)。

 ちょっと調べてみるとUnity(uGUIを使用)のみで対応するには、自前(スクリプト)対応するしかないらしく、どうしたものかなぁ、、、、と、しばし悩む。しかし、悩んだところで経験も知識もないんだから、時間の無駄ってことで力技で解決に向けて突き進む事に決定。

 とにかく、メニューのボタンやテキストフィールドの中身を、言語に応じて片っ端から書き換えていくようにします。

  • 使用フォント
  • フォントサイズ
  • テキスト

 1つのオブジェクトで書き換える内容は、上記の3要素でした。「Puzzle DE Tower」では、それほど数は多くないから大丈夫と思っていたら、やはり追加や削除、変更するためにいちいちスクリプトを変更するのは面倒でした。そこで、見つけたのがエクセルシートを読み込んでうみゃうにゃできるライブラリ。

github.com

nirasan.hatenablog.com

 

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にあるオブジェクトに対して機械的に情報を入れ替えるだけ(特に並びが重要でなかったので規則性のない並びになってます) 。

 これで、あらかじめシーンに置かれているメニュー系はばっちり。

f:id:hamazakifactory:20150824103348j:plain

オプション画面比較

 次に画像化された文字ですが、使用されていた数も少なく、Clearとか単純な単語ばかり。テクスチャのデータも削減したかった事もあり、わかってくれよ!と割り切って非対応にしました。

f:id:hamazakifactory:20150824110308j:plain 非対応例

 それでも、ゲームスタート前の初期設定では、さすがにないと不親切だろうということで、苦肉の策として、日本語のときにはテキストを付加することにしました(画像データを用意するより格段にコストが少ないので)。f:id:hamazakifactory:20150824110043j:plain

 あと残っているのは、アプリ内で生成される文字列やオブジェクトに対しての対応です。ここはもう、該当するスクリプトで必要に応じて随時書き換えるようにしています。

f:id:hamazakifactory:20150824111230j:plain

 正直、こんな方法をやらなくてもiOSAndroidの開発系のサイトをちゃんと読んで理解すればスマートで正しい方法があます。今回は、とりあえずなんとかすることが目的だったので、これでよし。次の時にはがんばろう。うん。