#問題
UnityでWebGL向けにアプリを出力した場合、アプリの文字が表示されない事があります。
例えば下のようにUnityのUIに日本語の表記を設定します。特に何も設定せずuGUIのTextコンポーネントでUIを表示しています。
これをWebGL向けに出力すると、下のように日本語が表示されません。
##フォントのフォールバックはWebGLでは動作しない
問題は、Unityのフォントの初期設定がArialである事、
そしてUnityのTextを使用した際に標準設定で設定されるArialフォントに日本語が含まれていない事です。
通常Unityは指定されたフォント(今回の場合Arial)に含まれない文字を使用する場合、他のフォントから文字を抽出します。しかしWebGLはこのフォールバックするようなフォントを内包していないため、日本語の文字を取得出来ず空白として表示している訳です。
#解決方法
この解決方法は、日本語を含むフォントを設定する事です。
実際に、日本語が含れているフォントの、Notoを使用してみます。
- google notoのサイトよりNoto Sans CJK JPをダウンロードし解凍します。
- NotoSansCJKjp-LightをProjectブラウザへドラッグ&ドロップします。
(Noto Sans CJK JPには日本語が含まれているので、NotoSansCJKjp-Light以外のフォントでもOKです) - インポートしたフォントをTextのFontへドラッグ&ドロップします。
- これでWebGLへ出力した際にも、日本語が表示されます。
TextMesh(3DText)の場合も同様に、Fontを設定することで日本語表示が可能になります。
#フォントのライセンスに注意
Fontにフォントを設定する方法を使用すると、日本語フォントを使用できるようになります。しかし、ゲームにフォントが含まれます。つまりフォントの再配布扱いとなります。
日本語向けのフォントは、ダウンロードして個人的に使用するのは認めていても、ゲームに同梱して使用すること(再配布)は認めていない事が多いです。
実際にフォントを利用する際には、よくライセンスを確認して下さい。
(Notoは再配布可能なフォントの一つです。但し再配布するにはLICENSE_OFLを同梱する必要があります)
#参考
Unity5.3のWebGLで日本語が表示されない!?-フェレット倶楽部の備忘録
Unityで日本語フォントを使う-Unityゲーム開発所