※以下で説明する通り、現状Dynamic Batchingを切らないとエラーになるようです。アプリ全体のパフォーマンスに影響があるため利用が難しそうですが、それはそれで情報としてあった方が良いと思うので公開します。
文字を3Dモデルとして扱う事で、巨大な文字を積み上げたり転がしたりしたいと思い、試してみました。
#VTextについて
Asset Storeで公開されている有料アセットです。
VText
https://www.assetstore.unity3d.com/jp/#!/content/24768
Unity 4.6.0 以降のバージョンが必要
VText is a Unity Package which generates dynamic 2d and 3D text at runtime, using an intuitive user interface. VText supports Unity Pro 4 and Unity 5(Personal Edition & Enterprise Solutions)
価格は $60 です(2016年9月8日時点)
#確認環境
- Unity v5.4.0f3
- Xcode v7.3.1
- MacBook Pro (OS X 10.11.5)
- iPhone 6s
#デモを動かす
##(1)初期設定〜Unityエディタ上で動かすまで
よくあるインポート→デモシーンを開いて実行、では動かないので注意して下さい。
この手順はアセットに含まれるドキュメント(Web上にもあります)に沿っています。
- VTextアセットをインポート(全てチェックでOK)
- UnityのWindowメニュー -> Virtence -> VText Setup を実行。VTextSetupというウィンドウが開く。
- Checkをクリック
- Create StreamingAssets Folderをクリック。このボタンは、既にStreamingAssetsディレクトリがある場合出現しない。
- Create StreamingAssets/Fonts Folderをクリック。同上。
- Install all provided fontsをクリック。これによりStreamingAssets/Fontsに幾つかのフォントファイル(.otf)が置かれる。デモシーンで使われているのでここで入れたが、自分で作る際には必要なフォントのみを置く。なおこのフォントファイルはビルドにそのまま入るため、サイズや著作権に注意。
- Unityを再起動してプロジェクトを開き直す
- Assets/Virtence/VText/_DemoScene/StartScene を開いて実行する
Unityエディタ上はこれで動くのですが、確認した環境では以下の問題が出ました。
##Dynamic Batchingのエラーが大量に出力される
新規プロジェクトを作り、上記の手順でデモをそのまま動かすと "Dynamic batching: index buffer source is NULL (first IB byte 0 count 0 first vertex 0 offset 226)" といったエラーがConsoleに大量に出力されます。クラッシュはしませんが気持ち悪い状態です。こちらについてはAsset提供元から報告があり、バグトラッカーにも登録されています。
VText提供元の発言
Unityのバグトラッカー
##(2)iOSで動作させるための対応
上記の通り、Unityエディタ上だとエラーログは出るものの動いていました。が、iOSプロジェクトをビルドしてXCodeから実機で実行しようとすると、起動時にUnityGfxDeviceWorkerでbad accessが出てクラッシュしてしまいます。
提供元が書いているくらいなので使い方の問題ではなく(環境依存はあるかもしれませんが)、Dymanic Batching周りだろうということで外してみたところ、クラッシュせず無事動作しました。
具体的には、iOSプラットフォームにswitchした状態でUnityの Build Settings -> Player Settings -> Other Settings -> Dynamic Batching のチェックボックスを外します。
しかしこの方法はアプリ全体のパフォーマンスに影響があるため、他の回避手段が見つかるか、上記のIssueが修正されないと私の用途では利用が難しく、いったんこのアセットの利用は断念しました(IssueにVoteしました)。
もう1つ同じ用途で使えそうな別のアセットがあるため、次はそちらを試す予定です。
→(2016/09/13追記)試しました。非常に良いです。
Unityで文字の3Dモデルを作る(FlyingText3Dアセット編) - Qiita
#デモの範囲での覚書
- 日本語(日本語フォント+日本語文字列指定)は、問題なく表示されました
- ドキュメントにもありますが、文字モデル生成時の負荷が結構高い印象です。クォリティ設定を落とす(ポリ数を小さくする)事で軽くはなりますが、用途次第では厳しいかもしれません
- 装飾はかなりバリエーションがあり、クォリティを上げるとかなり綺麗なので、動的生成ではない用途であれば有用そうだと感じました