Unity+WebGLでビルドした時に日本語が表示されない問題への対応

Unity

Textに文字が表示されない現象

Unity+WebGLでビルドしたゲームをプレイしたときに、表示されるはずも文字が表示されないという現象がありました。具体的には以下のような感じです。

ゲームビューでは表示されているが確認できる

WebGLでビルドして起動してみると表示されない … きれいに日本語だけが抜け落ちてますね。

原因としてはどうもフォントにあるようです。フォントがデフォルトだと “Arial” となっていますが、これには日本語文字は含まれていません。なので表示されないという次第です。

通常は “Arial” に含まれない文字のフォントは、OSデフォルトフォントがフォールバックフォント(代わりに使用するフォント)として使用されるみたいですが、これが WebGL には適応されないみたいです。

Unity – マニュアル: フォント

一部のプラットフォーム(WebGL、一部のコンソール)では、Unity が テキストの描画で使用する OS のデフォルトフォントは持ていないことに注意してください。そういったプラットフォームの場合、Include Font Data は無視され、フォントデータは常にプロジェクトに含まれます。フォールバックとして使用したいフォントはすべてプロジェクトに含まれている必要があります。よって、多言語化を目的としたフォントや太字/イタリックで描画する必要がある場合は、必要な文字だけを持つフォントをプロジェクト内に用意し、そのフォントを Font Names の「その他のフォントのリスト」にフォールバックとして使用するように設定する必要があります。フォントが正しく設定されている場合、フォールバックフォントはFont Importer のインスペクターに References to other fonts in project として表示されます。

日本語を表示されるようにする

日本語(Arialに含まれない文字)を表示させるには、日本語が含まれるフォントを利用します。利用するフォントは適当なものを用意すればいいですが、今回はゲームっぽいフォント「PixelMplus(ピクセル・エムプラス)」を利用します。ドット風の文字です。

ダウンロードした zip を展開すると拡張子が .ttf のファイルがいくつかありますが、これがフォントデータです。

ちなみに Unity がサポートしているフォント形式は TrueType(.ttf) と OpenType(.otf) です。

Unity のプロジェクトで利用する

まずはフォントファイルを Unity にアセットとして追加します。今回は「PixelMplus12-Regular.ttf」を使ってみます。ファイルをAssetsフォルダにドラッグ&ドロップで追加します。

追加した .ttf ファイルを TextオブジェクトのFontに設定します。ドラッグ&ドロップか右のポチボタンをクリックしてフォントを選択します。

設定は以上です。ゲームビューでもフォントが変わっているのがわかると思いますが、WebGLでも確認します。

結果

1行目はデフォルトフォントのテキストで、2行目が日本語を表示できるフォントを設定したテキストです。日本語が表示されてめでたしめでたしです。

 

コメント