(2012/06/28 追記)
※こちらのプラグインの対応環境は Mac/iOS/Android となっています(Windowsなどは非対応)。
(追記ここまで)
この前、Unity 4からダイナミックフォント(Dynamic Font)が使用可能になるという話が出ていましたが現行のUnityでも使用可能にするプラグインを作成した方が登場しました。
プラグインはこちらで配布されています。ビルド後のものは「unity-sysfont plugin package」や「Demo package」のリンクをクリックするとダウンロード出来ます。
imkira/unity-sysfont
https://github.com/imkira/unity-sysfont
「unity-sysfont plugin package」(unity-sysfont-demo.unitypackage)の方がメインの部分、「Demo package」(unity-sysfont.unitypackage)はデモのパッケージとなっています。
デモを使う場合にも unity-sysfont-demo.unitypackage のパッケージが必要なのでデモを試す時は注意して下さい。
自分のプロジェクトで使う場合には unity-sysfont-demo.unitypackage をインポートした後に以下の手順を行います。
1. Main Camera の Inspector から Projection を Orthographic に変更。 Size を 300 (ここの値は必要に応じて調整)に変更。
2. 空のGame Objectを作成。 Position を (0, 0, 0) に
3. それを選択した状態でメニューから「Component」→「SysFont」→「Text」を選択
4. Inspector にて Text に任意のテキストを入力、 iOS/Mac OSX Font に HiraKakuProN-W3 や HiraKakuProN-W6 など(英語のみ使うので有れば他のフォントでもOK)を設定
これで実行すると以下の2つのエラーが出ました。
Component MeshFilter could not be loaded when loading game object. Cleaning up!
Component MeshRenderer could not be loaded when loading game object. Cleaning up!
このエラーについてはProjectビューの中から Plugins/SysFont/SysFontText を開き、以下の部分の .hideFlags に設定している2ヶ所を変更すればOKです。
if (_filter == null) { _filter = gameObject.GetComponent<MeshFilter>(); if (_filter == null) { _filter = gameObject.AddComponent<MeshFilter>(); _filter.hideFlags = HideFlags.HideInInspector | HideFlags.DontSave; } } if (_renderer == null) { _renderer = gameObject.GetComponent<MeshRenderer>(); if (_renderer == null) { _renderer = gameObject.AddComponent<MeshRenderer>(); _renderer.hideFlags = HideFlags.HideInInspector | HideFlags.DontSave; }
それぞれ、以下の様に変更。
_filter.hideFlags = HideFlags.HideInInspector | HideFlags.DontSave;
↓
_filter.hideFlags = HideFlags.HideInInspector;
_renderer.hideFlags = HideFlags.HideInInspector | HideFlags.DontSave;
↓
_renderer.hideFlags = HideFlags.HideInInspector;
実際に使ってみたものをキャプチャしたものがこちらになります。
※テキストを表示した部分のみ切り取っています。
【 HiraKakuProN-W3 を指定したもの】