以前、Unityでシンプル過ぎるすごろく を作るということをやりました。
その際に、実は少しだけ問題が残っていました。
それが、Web上でUnityを動かすと日本語が表示されないという問題。
今回は、その解決方法と修正したバージョンを置いておきます。
***
Web上でUnityを動かすと日本語が表示されない問題
Unityの開発環境上では問題なく日本語も英語も数字も表示されるが、いざ「完成!」となってWebGL形式でビルドしてWeb上で実行した際に、日本語の部分だけ表示されない問題が発生していた(英語、数字は表示される)。
ボタンを押す前の状態。
本来は、こういう風に「↓」の矢印マークが表示されて欲しい。
だが、「↓」が表示されていなかった。
解決方法
今回は「↓」という文字だけだったので、気づくのに手間取ったが、「↓」は英語や数字、記号ではなく日本語のフォント。
そこで、Unity WebGLで日本語フォントが表示されない問題を検索すると以下の解決方法が見つかった。
欲しかった解決方法ズバリの記事。
原因や解決方法はリンク先で解説してありますが、自分の理解したメモも含めかくと、
- UnityのデフォルトのフォントはArial
- Arialに含まれない文字(日本語等)が呼び出された時は、フォールバックという機能で他のフォントから必要な文字を取り出してくれる
- このフォールバック機能はWebGLだと動作しない
- 解決策として、日本語も使いたいなら、もとから日本語も含まれるフォントをArialの代わりに使いましょう
- そのフォントの例としては Google notoのNoto Sans CJK JP
ということです。
リンク先で解説してあるように、フォントをダウンロードしてUnityのプロジェクトフォルダに入れ、テキストで使うフォントとして設定したら問題なく表示できました。
テキスト一つ一つに設定する必要があるので、たくさんのテキストオブジェクトを使っていると設定が大変そう。デフォルトを変更する方法とかあるのかな?
注意点として、フォントをまるまると入れた状態でUnityゲームを配布することになるので、フォントは再配布可能なライセンスのものでないといけないらしいです。
修正したものを動かしてみる
殆ど変わっていませんが、修正したバージョンを動かしたい人はコチラから。
Sugoroku 修正版
修正版はフォントデータが入っている分、データ量が多くなりロードに時間がかかります。
修正前のものはコレ。
Sugoroku 以前のバージョン
余談
「サイコロを振る」は英語で「Roll the dice」が慣用句として使われるようです。「diceだと複数形だから一個なら a dieになるのか?」とかいろいろと考え、調べてみた結果、どちらでも良いようです。「一つのサイコロ」と明示したい場合は「a die」でも「one of the dice」でもどちらも使えるようです。「Roll the dice」も、2個や3個など複数のサイコロだけでなく一つだけサイコロを振る場合も含んでいるようです。
参考: 「さいころ」は die か dice か [注意したい単語・意外な意味]
個人的には、「die」だと「死」のほうもあるので、サイコロだとわかりやすい「dice」を使ったほうがシンプルでいいかなと思います。