
七夕
織姫を待ちすぎてそろそろ天の川も干上がりそうな独身貴族の皆さんこんにちは。貴族と言いつつ先週もらったボーナスが既に手元にないのですが一体どうした事でしょう。
2Dゼルダ風ゲーム
一時期話題になったものの、最近あまり見なくなったHD-2Dのアクションゲームを最近購入しました。

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

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

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

英雄的な活躍をする主人公(=エリオット)が困難な状況下の姫(=ヒューリア姫)を救うために世界中を冒険する、というストーリーも王道ゼルダライクなんですが、タイトルに「千年物語」とあるように、主人公が4つの時代を行き来してその時代で遭遇するサブクエによって他の時代のストーリーが(微妙に)変化する、というのは本作の大きな特徴となっています。
とはいえ、4つの時代とも基本的にマップが同じでダンジョンのギミックや各地を巡る経路が変わる程度の違いしかない為、例えば「Aの時代のサブクエを達成するためにBの時代の〇〇の宮殿を探索する」といった展開になっても、Aの時代とBの時代で同じダンジョンを繰り返し攻略することになって面倒臭く感じてしまうこともあります。
敵の種類も4つの時代で大きく変化することもないため、時代を4つに分けるより1つの時代にギュッと濃縮した方が良かったのでは?と思いますが、ゲームのコアとなるアクション面は快適でメインのストーリー展開は熱くなる場面もあるので、こういったゼルダライクが好きな方にはお勧めできる仕上がりになっていると思います。
文章のローカライズ
前回、前々回の記事でUnity Localizationによる文章のローカライズを紹介しました。
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は正しく表示されないので注意してください。
検証結果
作成中ゲームの音量調整画面について言語毎に文章とフォントを切り替えるようにしました。

日本語指定の場合

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