Unityの3D空間上のフォント

UnityでUIを作るには、Canvasを作り、その下に各種オブジェクトを配置します。

普通はスクリーン上にそのまま映るようにしますが、これがVRだったとすると画面にそのまま張り付くと非常に目が疲れます。

3D空間上に文字を配置する場合、まずCanvasを配置し、RenderModeをWorld Spaceにします。

f:id:chirotec:20180903085120p:plain

下にTextコンポーネントを配置すると、以下のように3D上に文字を浮かべることが出来ます。(色などを変更しています)

f:id:chirotec:20180903084824p:plain

 

問題

ただ、使っているうちに問題が発生しました。

・フォントのサイズを指定しても、反映されないことがある

・Textの"Best Fit"を有効にしていると、カメラを動かしているうちにエラーが発生して文字が表示できなくなる(おそらく文字のサイズが目まぐるしく変わるためテクスチャがうまく作れていない)

 

原因は調査中ですが、前者は設置するときにTextコンポーネントのオブジェクトのscaleを変更することで、とりあえず対応しました。

後者は表示する前にテキストの文字数を見て、scaleを変更するようにしました。

多分もっと良い方法がありそうなんですが……