テキストアニメーション
LMotion.String.Create**Bytes()
を用いることで文字列をアニメーションさせるモーションを作成できます。
TMP_Text text;
LMotion.String.Create128Bytes("", "<color=red>Zero</color> Allocation <i>Text</i> Tween! <b>Foooooo!!</b>", 5f)
.WithRichText()
.WithScrambleChars(ScrambleMode.Lowercase)
.BindToText(text);
LitMotionはUnity.Collection
名前空間内にある固定長の文字列型FixedString-
を使用します。そのため文字列のモーションを作成する際にはアニメーションさせる文字列の長さにあった関数を選択する必要があります
また、文字列をアニメーションさせる際はBindToText()
を使用してTextMeshProのテキストにバインドすることが推奨されます。これはTMP_Text
のSetText()
を用いてバインドするため、完全にゼロアロケーションで文字列をアニメーションさせることが可能になります!
文字列のモーション専用の設定についてはモーションの設定を参照してください。
数値型のモーションをTextにバインドする
数値のモーションをTextにバインドすることも可能です。こちらもTMP_Text
が対象の場合はBindToText()
を使用してゼロアロケーションでバインドを行うことができます。
TMP_Text text;
LMotion.Create(0, 999, 2f)
.BindToText(text);
さらに、Format用の文字列を渡すことで書式の設定を行うことも可能です。以下はfloat型の数値をカンマ区切りで小数第二位まで表示するモーションのサンプルです。
TMP_Text text;
LMotion.Create(0f, 100000f, 2f)
.BindToText(text, "{0:N2}");
ただし、これらのFormatを含むモーションは内部でstring.Format()
を使用するためGCアロケーションが発生します。これを回避するにはプロジェクトにZStringを導入する必要があります。詳細はZStringの項目を参照してください。