LoginSignup
4
3

More than 5 years have passed since last update.

FlyingText3Dで用意されているAPIを調べてみた

Posted at

この記事は公式ドキュメントの補足的な立ち位置で書いてます。

FlyingText3Dとは

Unityで文字の3Dオブジェクトを簡単に生成してくれるアセット。
フォントファイルさえ用意すればどんな文字でも3Dオブジェクトとして生成してくれます。
その他詳しいことはコチラの記事を見てください。

用意されているAPI

大きく分けて5種類あります。

GetObject

文字列(String)を渡したら 子を持たないGameObject が返ってくる。
文字列を1つのまとまったオブジェクトとして扱いたいときはこれを使う。
String のほかに Material, edgeMaterial, size, extrudeDepth, resolution, characterSpacing, lineSpacing, lineWidth, position, rotation が引数として渡せる。
一部だけ指定することも可能。例えばPositionとRotationだけ指定したいなら

GameObject gameObject = FlyingText.GetObject( (string)text, (Vector3)position, (Quaternion)rotation);

とすればいい。

GetObjects

GetObjectと違い文字列(String)を渡したら 文字数だけ子を持った親のGameObject が返ってくる。
文字を個別に扱いたいときはこれを使う。
使用できる引数はGetObjectと同じ。

GetObjectsArray

GetObjectsと違い文字列(String)を渡したら 1文字ごとのGameObjectを配列として 返す。
特定の文字だけ操作したいときはこれを使った方が便利?
使用できる引数はGetObjectと同じ。

UpdateObject

生成済みオブジェクトの文字を変更したいときに使用する。
FlyingText3Dで生成したオブジェクト(GameObject)と変更後の文字列(String)を引数として渡すとオブジェクトの文字が変わる。返値はない。

UpdateObject( (GameObject)gameObject, (string)text);

PrimeText

このアセット内で1番使えない関数。
Startで呼び出すことで、引数として渡した文字を事前に用意してくれる。
事前に用意することで文字オブジェクトの生成時の負荷を軽くすることができる。

FlyingText.PrimeText("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");

英語だけなら大文字小文字合わせて50文字程度で済むし、半角数字を含めても+10字程度なので問題にはなりません。
これを日本語に拡張すると、平仮名だけで100文字とちょっと、片仮名や常用漢字、人名漢字、全角数字などなどを合わせると3000字を余裕で超えます。
フォントファイルに登録されている文字だけ抽出してそれを登録するという方法もありそうですが、メモリ消費量がヤバいことになりそう。
あとフォントに登録されている文字を抽出するってどうやるの。

正直現実的ではないので、文字列を1~5文字ずつに分離してそれぞれGetObjectした方がいいと思います。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3