Text Animator for Unity


投稿日:2023年3月30日 | 最終更新日:2025年12月22日

Text Animator for Unityとは

Text Animator for Unityは、文字表示にアニメーション演出を制御するAsset Storeの有料プラグインです。
詳しくは、Text Animator for Unityの公式サイトや、アセットストアをチェックしてください。

宴の「Text Animator for Unity」対応プラグインのダウンロード

宴でTextAnimatorを使用するには、拡張プラグインが必要です。
「Text Animator for Unity」のバージョンによって使用するプラグインが違うので、ご注意ください。
(ファイルのダウンロード後に、拡張子が . gzになっている場合は、.unitypackageに変えてからプロジェクトに適用してください)

履歴

Ver3.0(2025/12/22)
Text Animator 3 に対応

Ver2.4(2025/04/19)
ノベルゲームの起動と終了時にクリア処理に対する対応が不完全だったのを修正。

Ver2.3(2024/11/11)
ページ切り替わりで起きる可能性のある不具合を修正。

Text Animator for Unity 3

Text Animator 3を使用する場合は以下のリンクからDLしてください。
https://madnesslabo.net/UtageSample/UtageForTextAnimatorVer3.0.unitypackage

Text Animator for Unity 2

Text Animator 2を使用する場合は以下のリンクからDLしてください。
https://madnesslabo.net/UtageSample/UtageForTextAnimatorVer2.4.unitypackage

「Text Animator for Unity」Ver1

Text Animator 1を使用する場合は以下のリンクからDLしてください。
https://madnesslabo.net/UtageSample/UtageForTextAnimator.unitypackage

宴の「Text Animator for Unity」対応プラグインの使い方

パッケージを適用すると、「UtageCustomProjects/UtageForTextAnimator」というフォルダが作成されます。
UtageForTextAnimator/Sampleフォルダ以下にはサンプルシーンとサンプルシナリオが入っています。
サンプルでは、宴やTextAnimatorのSampleを流用して設定を行っているため、それらを削除していない状態で試してください。

UtageForTextAnimatorをAddComponent

AdvEngineオブジェクトのUtageForTextMeshProコンポーネントをRemoveして、代わりにUtageForTextAnimatorをAddComponentしてください。

TextMeshProNovelTextをNovelTextForTextAnimatorに入れ替え

さらに、各メッセージウィンドなどのテキスト表示オブジェクトで
TextMeshProNovelTextコンポーネントをRemoveComponentして、代わりにNovelTextForTextAnimatorをAddComponentして、RubyPrefabにルビ用のプレハブを設定してください。
Text Animator Ver2.2からは、Rootにメッセージウィンドウの表示のルートオブジェクト(RootChildren)を設定してください。

MessageWindowオブジェクトのAdvUguiMessageWindowTMPコンポーネントの「TextPro」に、MessegeTextオブジェクトを再設定してください。

Text Animator for Unityの設定

「Text Animator for Unity」本来のコンポーネントを設定します。
Text Animator for Unity自体の仕様が違うので、バージョンに合わせた設定が必要です。

Version3

TextAnimator-TextMeshProコンポーネントをAddComponentしてください。

文字送りタイミングの設定用のScriptableObjectを作成します。
ProjectWindowで、右クリックして Create > Text Animator For Unity > TypeWriters > By Chracterで作成します。

作成後「Wait For Normal Charas」「Wait Long」「Wait Middle」などの値をデフォルトよりも大きな値(3など)に設定します。
これは、TextAnimatorが自動的に行う文字送りの速度(1文字あたりの表示秒数)の設定です。
宴の場合は宴側が文字速度を制御しているので、TextAnimator側の方を大きな値にして先に宴側のほうが実行されるようにして実質的に無効化します。

さらに、Typewriter ComponentをAddComponentしてください。

  • 「Timing Scriptable Base」に先ほど作成した「By Chracter」のScriptableObjectを
  • 「Use Type Writer」をオンに設定
  • 「Start Typewriter Mode」を「From Script Only」に設定

Version2から3へした場合

Text Animator for Unity側のドキュメントにバージョンアップ方法が書いてないので、やり方が不明です。
一部のコンポーネントがScriptableObjectになったりと、あまり直接のバージョンアップを意識した設計になってない気がします。
(公式ドキュメントでは新規プロジェクトで使用することを想定してるような記述もあります)
一度、手作業で関連コンポーネントを削除して、改めてVersion3用の設定をしなおすなどしてください。

Version2

TextAnimator-TextMeshProコンポーネントをAddComponentしてください。

  • 「Animation Loop」を「Late Update」に設定
  • 「DefaultTags」の「Appearances」と「DisAppearances」のサイズを0に設定

さらに、Typewriter-ByCharacterコンポーネントをAddComponentしてください。

  • Main Settingsの「Use Type Writer」をオンに設定
  • TypewriterのStart Typewriter Modeを「From Script Only」に設定

Version1

「Text Animator for Unity」のTextAnimatorコンポーネントをAddComponentしてください。
「UseEasyIntergration」はオフ。(TextAnimatorPlayerは使わないのでもし、AddしていたらRemoveしてください)
「Default Appearances」のサイズ0すると、表示エフェクトのデフォルト指定を削除できます。

利用可能タグ

Text Animator for Unityのバージョンによって、デフォルトで組み込まれているタグが違う点に注意してください
「Text Animator for Unity3」のビルトインタグ
「Text Animator for Unity2」のビルトインタグ
宴側では上記の二つにあるタグ名は両方ともタグとして認識するようになっていますが、
エフェクトが動作するかどうかは、TextAnimator側で利用可能かどうか次第になります。

TextAnimator3では、BehaviorsとAppearancesの区別なくどちらでも同じタグが使用できます。
その反面2でいうとAppearances系のタグ(「diagexp」など)がなくなってしまったようです。
また、TextAnimator3のデフォルトの設定ではpendの登録が抜けている場合あるようなので、pendタグのScriptableObjectをAnimationDataBaseなどに追加設定する可能性があるかもしれません。

Behaviors

文字のアニメーションタグです。基本的にはループアニメーションが続きます。
パラメーター指定等の詳細は、「Text Animator for Unity」のドキュメントを確認してください

タグ サンプル
pend <pend>text</pend>
dangle <dangle>text</dangle>
fade <fade>text</fade>
rainb <rainb>text</rainb>
rot <rot>text</rot>
bounce <bounce>text</bounce>
slide <slide>text</slide>
swing <swing>text</swing>
wave <wave>text</wave>
incr <incr>text</incr>
shake <shake>text</shake>
wiggle <wiggle>text</wiggle>

Appearances

文字を表示しはじめるときに一度だけ再生されるアニメーションです。
タグを囲む記号が、<>ではなく{}な点に注意してください。

TextAnimator3

Behaviorsと同じ名前のタグが使用できます。
(ただし、TextAnimator2で使えたタグが殆どなくなってしまったようです)

タグ サンプル
pend {pend}text{/pend}
dangle {dangle}text{/dangle}
fade {fade}ext{/fade}
rainb {rainb}text{/rainb}
rot {rot}text{/rot}
bounce {bounce}text{/bounce}
slide {slide}text{/slide}
swing {swing}text{/swing}
wave {wave}text{/wave}
incr {incr}text{/incr}
shake {shake}text{/shake}
wiggle {wiggle}text{/wiggle}

TextAnimator2

タグ サンプル
diagexp {diagexp}text{/diagexp}
horiexp {horiexp}text{/horiexp}
vertexp {vertexp}text{/vertexp}
diagexp {diagexp}text{/diagexp}
offset {offset}text{/offset}
fade {fade}text{/fade}
size {size}text{/size}
rdir {rdir}text{/rdir}

パラメーター指定

<offset a=180 d=5>text</offset>
のようにして、アニメーションの時間や大きさなどのパラメーターを指定することができます。
詳細は「Text Animator for Unity」のドキュメントを確認してください

独自タグ機能

TextAnimatorではオリジナルのタグを追加設定して使用することが可能です。

Test Custom <?myevent=arg0,arg1> Event tag
Test Custom {myappearance} Appearances {/myappearance} tag.
Test Custom <mybehavior>  Behavior </mybehavior> tag.

TextAnimator自体のタグの追加の方法は、TextAnimatorのドキュメントを確認してください。
https://docs.febucci.com/text-animator-unity/effects/create-your-own-effects
追加したタグに関しての情報は「UtageForTextAnimator」コンポーネントにも設定する必要があるので、バージョンに合わせて下記の設定を行ってください。

TextAnimator3

追加したタグを設定したAnimationDataBaseがある場合は「Animations Database」にそれを設定してください。
タグを個別に設定したい場合は「New Effects」以下に追加していってください。
イベントタグは、文字列で「New Events Tags」に追加してください。

TextAnimator2

「New Behavior Tags」または「New Appearances Tags」、「New Events Tags」に設定してください。
*注) TextAnimatorの仕様かもしれませんが、BehaviorとAppearancesの場合はタグ名を小文字のみにする必要がある模様です。

イベントタグ

上記の「New Events Tags」を使うことで宴上でもTextAnimatorのイベントタグも使用可能になります。
これは、テキストの任意の位置にUnity上にメッセージを送信機能を埋め込むというものです。

書き方のサンプル

イベントタグは<? >で囲う必要があります

Test Custom <?myevent> Event tag
Test Custom <?myevent=arg0,arg1> Event tag

引数を持たせたい場合は、<?イベントタグ名=引数1>と記述し、複数設定したい場合はカンマ区切りで<?イベントタグ名=引数1,引数2>と記述します。

イベントタグをプログラムで扱うサンプル

サンプルは以下のパスにあります。
Assets/UtageCustomProjects/UtageForTextAnimator/Scripts/SampleTextAnimatorEvent.cs
文字の表示位置がイベントタグの位置に来た時点で、TypeWriteコンポーネントのOnMessageに設定したプログラムが呼ばれます。
引数は、EventMarkerのparamatersに文字列として設定されていますので、これを利用するプログラムを各自で拡張する形になります。

イベントタグと宴の相性問題

基本的には、宴はテキストとその他のコマンドを独立させているので、テキストの途中になんらかの処理をするようには設計されていません。
テキスト表示途中になにかしたい場合は、PagaCtrlとWaitコマンドやSendMessage系のコマンドを組み合わせて使うのが基本です。
ただ、ローカライズに問題がある場合や簡易易的な処理だけしたい場合があるときは、イベントタグを使うほうが楽になるケースがあるかもしれません。

intervalタグとの併用問題
intervalタグと合わせて使用することで、時間差処理もできるのですが
両方のタグの間にスペースなど、一文字以上入れないとタグの実行順が正確になりません。
<interval=1> <?event=arg>
<?event=arg> <interval=1>
スペースなしで、連続して書いた場合はインターバルの開始とイベントタグの開始が同時に発生します。
そのためインターバルの終了を待たずにイベントが発生してしましますので、注意してください。

waitforなどのActionタグは使用不可能

TextAnimatorの、waitfor、waitinput、speedなどのActionタグは使用できません。
宴のintervalタグや、PageCtrlspeedタグなどを使用してください。

改ページ時のちらつき対策(Ver2のみ?)

改ページのときに、次のページでルビやアンダーラインなどを使っていると、改ページ時に一瞬全文表示されたり、文字化けしたりして画面がちらついてしまう現象があります。
日本語などのためにフォールバックフォントを使っていると特に発生しやすいようです。
(TextAnimator側に確認しましたが、根本的な対策は難しいようです)

回避的な処置として、改ページ直後1フレームはTextを透明にするという処理を追加しました。

名前 内容
FallbackFontBugFix 改ページのちらつきバグを抑制するために、改ページ直後1フレームの透明処理を有効にするかどうか
Canvas Group 1フレームだけ透明にする対象。任意のCanvasGroupを設定。
MessageText自体にCanvas GroupをAddComponentして設定する と、テキストと改ページアイコンのみ透明になる
FallbackFontBugFixSkipping スキップ中にも1フレームだけ透明にする処理を有効にするか。
スキップ中に単純に1フレーム透明にするとテキストが全く表示されないままになってしまうため調整が必要。
Disable:スキップ中は透明にしない
HideSkipWaitTime:AdvPageのSkip Message TypeがWait Skip Speedにになっているときは1フレーム透明にする。

注意点

また、下記の通りいくつか注意点があります。

  • 宴のLegacyテキスト(NovelText)には非対応。
    宴のLegacyテキスト処理も、テキストの頂点等を操作しているため、TextAnimatorと機能が衝突してしまうため非対応です。

  • 起動後初回のAppearances系のタグがうまく動作していない。(TextAnimatorのバージョンによる?)
    サンプルシナリオで、起動後に「ArgTest」の選択肢を最初に選ぶと違いがはっきりとわかると思うのですが、エフェクトの動作がずれてしまっています。
    TextAnimatorのバグか、もしくはプログラム上でなんらかの初期化が必要なのかもしれないのですが、ちょっとどうすればいいのかわかりませんでした。(解決法がわかりそうだったら教えてください)
    同じシナリオであっても、起動直後でなければ問題ないようです。

  • TextMeshProの取り消し線や下線タグを使うと、まだテキストが非表示の部分であっても最初から線が表示されている。
    TextAnimatorの不具合なのか未対応なのかわかりませんが、TextAnimatorのタグを使っていなくてもそのように動作してしまいます。

  • 宴のルビや傍点は動作はするが、エフェクトに合わせて動くわけではない。
    文字のエフェクトの動きに合わせてルビなどが一緒に動くわけではありません。