WebGLで日本語が表示されない時の対処方法

2017.06.01 自習室 0
WebGLで日本語が表示されない時の対処方法

UnityでUIを作るとデフォルトのフォントがArialになっていますが、これをそのまま使ったら日本語が表示されなくなってしまったので、原因と解決方法のメモ。

環境

Unity 5.6.0f3

原因

原因としては以下の2つの要因によるようです。

  • Arialに日本語が含まれていない
  • 通常、含まれていないフォントが使用されている場合はフォールバックフォント(代わりに使用するフォント)を使用するが、WebGLではこのフォールバックフォントが適用されない

ちなみに公式サイトには以下のように書かれています。

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

解決方法

原因が2つあるので、単純に考えると「①日本語が含まれるフォントを使用する」「②フォールバックフォントが適用されるようにする」の2つの解決方法が考えられます。

しかしデフォルト使用されるArialについて、フォールバックフォントの設定を書き換えることはできません(たぶん)。なので素直に日本語が使えるフォントをプロジェクトにインポートし、使用します。

フォントのインポートは、プロジェクトにフォントファイルをドラッグ&ドロップするだけです。

フォントをインポートする

インポートしたフォントは「font」から指定できるようになります。

インポートしたフォントを選択する

インポートしたフォントを指定し、再度WebGLに書き出すと、以下のように日本語が表示されるようになります。

ちなみにこの画像はunityroomというUnityで作ったゲームを投稿できるサイトで行われていた1週間ゲームジャム「unity1week」で作成したゲームの画像です。他にも多数のゲームが投稿されているので、よかったら一度遊んでみてください。

unity1week 《ピンの本懐》

参考:フォールバックフォントの指定方法

フォールバックフォントは、フォントを選択した時にinprectorに表示される「Font Names」から指定することができます。

フォールバックフォントの指定

関連記事

UnityのWebGLで日本語を表示する 2016.08.29 フォントに含まれない文字を使うときの動作 2014.12.30 Unityのシステムフォントの注意点 2016.02.22

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です