原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】 Unity Localization で言語に応じてフォントも切り替える

七夕

織姫を待ちすぎてそろそろ天の川も干上がりそうな独身貴族の皆さんこんにちは。貴族と言いつつ先週もらったボーナスが既に手元にないのですが一体どうした事でしょう。

 

2Dゼルダ風ゲーム

一時期話題になったものの、最近あまり見なくなったHD-2Dのアクションゲームを最近購入しました。

スーファミ時代の2Dゼルダを継承したような内容で数種類の武器を切替え、同伴キャラクターの魔法を駆使して戦闘や探索を行います。視点は見下ろし型の固定なので敵と遭遇した場面では前後左右の移動と武器による攻撃がメインとなり、盾によるパリィアクションもあります。


敵の種類はそこそこ多く、それぞれ特徴的な攻撃をしてくるものの、押し並べて攻撃タイミングが遅いので対処は容易く比較的難易度は低いと思います。
ボスキャラに関してはそこそこ手ごたえのあるボスもいますが、攻撃の予備動作が分かりやすくパターンもあまり多くないのでボスが倒せずストーリーが詰む、といった事もないのではないでしょうか。

前述のように2Dゼルダライクのゲーム仕様なので成長要素と言えば魔法の種類とHPの最大値が増える程度で、それも各地を探索してアイテムを発見する事による増加となっているため、道中に出会う雑魚敵を無理して倒す必要はありません。
フィールマップ上にHPや魔法を増やすための神殿(ゼルダ的な祠)が配置されており、そこからアイテムを得るにはちょっとしたパズルを解く必要があります。もうここら辺もゼルダライクですね。

英雄的な活躍をする主人公(=エリオット)が困難な状況下の姫(=ヒューリア姫)を救うために世界中を冒険する、というストーリーも王道ゼルダライクなんですが、タイトルに「千年物語」とあるように、主人公が4つの時代を行き来してその時代で遭遇するサブクエによって他の時代のストーリーが(微妙に)変化する、というのは本作の大きな特徴となっています。

とはいえ、4つの時代とも基本的にマップが同じでダンジョンのギミックや各地を巡る経路が変わる程度の違いしかない為、例えば「Aの時代のサブクエを達成するためにBの時代の〇〇の宮殿を探索する」といった展開になっても、Aの時代とBの時代で同じダンジョンを繰り返し攻略することになって面倒臭く感じてしまうこともあります。
敵の種類も4つの時代で大きく変化することもないため、時代を4つに分けるより1つの時代にギュッと濃縮した方が良かったのでは?と思いますが、ゲームのコアとなるアクション面は快適でメインのストーリー展開は熱くなる場面もあるので、こういったゼルダライクが好きな方にはお勧めできる仕上がりになっていると思います。

 

文章のローカライズ

前回、前々回の記事でUnity Localizationによる文章のローカライズを紹介しました。

www.karvan1230.com

www.karvan1230.com

Localization Tablesによる定義で言語毎に文章の切替は可能となりますが、その文章を表示するTextMeshProにはどちらの言語でも表示できるフォントを指定する必要があります。
ローカライズを英語と日本語のみとする場合には日本語対応のフォントを指定すれば十分でしょうが、中国やアラビア語も同時に対応しようとするとそれらすべてを含んだフォントアセットを見つける or 作成するのは非常に困難です。

より多くの言語に対してローカライズを行うには言語毎にその言語に応じたフォントを切り替える必要があります。

 

フォントアセットテーブルの作成

まず最初に文章の切りり替えと同様に言語毎に使用するフォントを定義するLocalization Tablesを作成します。
Localization TablesのNewCreateボタンを押し、Typeに「Asset Table Collection」を指定、名前を決めてCreateボタンを押します。

この作成したAssetTableに任意のキー名(今回はUIText)と、各言語で使用するフォントアセットを指定

次に同じAssetTableに任意のキー名(今回はUIMaterial)と、先ほどの指定したフォントアセットで使用するMaterialを指定します。

MaterialはTextMeshProでフォントアセットを指定した際にInspectorで「Material Preset」として表示されているMaterialを指します。

 

Inspectorの設定

Unity Localizationにより多言語対応しているTextMeshProのInspectorを開きます。
TextMeshProのFont Asset欄を右クリックして「LocalizeProperty」をクリックします。

同じようにTextMeshProのMaterial Preset欄を右クリックして「LocalizeProperty」をクリック

TextMeshProのオブジェクトにGameObjectLocalizerコンポーネントが追加されているので、そこに前段で作成したAssetTableのフォントアセット(UIText)とマテリアル(UIMaterial)を指定します。

正しく設定すると文章のローカライズの同様にTextMeshProの該当項目が緑色で表示されるようになります。

このFont AssetとMaterial Presetは同時に切り替わらないとTextMeshProは正しく表示されないので注意してください。

 

検証結果

作成中ゲームの音量調整画面について言語毎に文章とフォントを切り替えるようにしました。

日本語指定の場合

 

英語指定の場合

言語毎にフォントが切り替わっているのが分かると思います。

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。