2014年11月11日

ゲームのアップグレード (18) | ローカライズ対応

ボーナスはひとまず落ち着いたんで(アニメーションつけないと....)、ちょっと別の事、今回は言語対応やってみますね。
ま、英語と日本語だけなんだけど。


データから作ってみよう
さて、じゃ、まずテストに使う為のデータから作りましょうね!
データはまたJSONオブジェクトで、Resources の下に置いておきたいと思います。

一応そんな感じにしとくと、将来(いつかは知らないが)サーバー持って、テキストデータをダウンロードする様になっても移行しやすいと思うんですよね。

さ、出来たデータはこんな感じ。
Screen Shot 2014-11-10 at 11.23.28 PM.png
最初の "key" フィールドが言語共通のキーワード。"en" が英語テキスト。"ja" が日本語テキスト。
テストなんで、ひとまずこれだけ!


読み込んで辞書に保存
じゃ、処理の実装ね!
言語対応様に、YGLocalize ってクラスを作って、Languages っていう GameObject にくっ付けてます。
Screen Shot 2014-11-10 at 11.32.53 PM.png
スクリプトの中身だけど、ま、大事なとこだけ。
Screen Shot 2014-11-10 at 11.30.45 PM.png
text_data が辞書クラスで、ここにキーワードと、選択されてる言語テキストを保存していく場所。
43行目でさっきのjsonデータを読み込んで、それをJSONオブジェクトに。(44行目)
46行目でデバイスから言語設定取り出し。
50行目からのループで、取り出したJSONオブジェクトの配列を解析して、キーワードと言語に対応する文字テキスト取り出し。
54行目で辞書に保存。
ま、単純だよね♪


2種類のテキスト
さて、テキストって言っても、使い方によって色々あるとおもうんだけど、代表的っぽい2つの例で、実装を見て行きますね。
2種類って、性的、違うね。静的なテキストと、動的なテキスト。
さっきのテスト用データで言うと、3つ目が静的、基本そのまま表示してればいいテキスト。
1つ目と2つ目が動的なテキストで、ゲームの状態によって元の文字列をモディファイしてやった後に、テキストとして表示するテキストね。
Screen Shot 2014-11-10 at 11.43.44 PM.png

画面下の方の、"Come back Tomorrow and receive Item below!" ってのが、静的な、変更が要らないテキスト。
画面上の方の、"1 of 30 days" ってのが動的に2カ所を書き換えて表示する必要があるテキスト。"1" と "30" ね。


動的なテキストの言語対応付き表示
どっちかと言うと、動的なテキストの方が簡単ですかね。スクリプトでやってる事が見えるから。
デバッグテキスト表示してるのと一緒ですよね。
Screen Shot 2014-11-10 at 11.46.37 PM.png
関係ないとこも結構含まれてて分かりにくいかもしれないけど、基本的には82行目〜83行目だけですよね。
82行目で辞書から文字列を取り出して、実際には文字列フォーマット(中身は"{0}of{1}day"ね。)だけど、そこに string.Format で必要な数字を入れてやって、Serializeield で取っておいた textSubTitle っていう Text 型にテキストをセットして表示。
この辺が、数値じゃなくて、ユーザー名だったり、他の情報だったりする訳ですね。


静的なテキストの言語対応付き表示
さて、静的テキスト。こっちの方がUnity独特かもね。
なんか長い名前だけど、YGLocalizedTextClient っていうコンポーネントを作ってます。
このコンポーネントを、テキスト表示コンポーネントを含む GameObject にくっ付けて、GameObject が起動した時に中身を書き換えちゃうんですね。
Screen Shot 2014-11-10 at 11.56.16 PM.png
ま、やってる事は単純で、いつもの SerializeField で文字テキストのキーワードを設定(7行目)。
で、そのキーを元に言語に対応したテキストを取得して(29行目)、同じ GameObject にいるはずのテキスト表示コンポーネントの text に上書き!

Unity 側はこんな感じね。
Screen Shot 2014-11-11 at 12.01.33 AM.png
一番下が、YGLocalizedTextClient で、Key を設定。このキーを元に、Text 内の Text を上書きするんで、元々入ってるテキストをいくら変更しても、表示変わんないから気をつけて!

さて、言語対応の実装はこんな所かな!!
ほんと〜は、内緒にしてる大問題があるんだけどね〜。
それは、まぁ、解決出来たらいつの日にか!

        にほんブログ村 ゲームブログ×PlayNCBlogへ
 初めてみました。よかったらクリックお願いね ♪


辞書と言えば...
posted by やまけん at 11:30| Comment(0) | Unity | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: