(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


Text Animatorで特定の文字まで到達した瞬間を検知するイベントを実装する方法【Unity】【アセット】【Text Animator】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 6000.1.11f1
Text Animator 2.3.1


はじめに

以前テキストにアニメーションを追加したり、


文字送り(文字を最初から順番に表示する)を実装出来たりする、


Text Animatorというアセットを紹介しました。

Text Animator for Unity - Unity Asset Store


今回はこのText Animatorで特定の文字まで到達した瞬間を検知するイベントである、

Trigger Events when typingという機能の紹介です!

画像を変える<?ChangeImage=NewTax><waitfor=1.0>、
もう一回画像を変える<?ChangeImage=OneChance><waitfor=1.0>、変わった?

https://docs.febucci.com/text-animator-unity/typewriter/trigger-events-when-typing



イベント

早速ですが、イベントの内容は先頭に?を付けて<と>で囲んだタグで設定します。

ちなみにタグは大文字小文字を区別します。

(waitforは以前紹介した待ち時間のタグ)

最初のテキスト<?eventTag><waitfor=1.0>、
イベントタグの後のテキスト<?eventTag2><waitfor=1.0>、最後のテキスト


次にタグを検知する方法ですが、

TypewriterCore(TypewriterByCharacterなどが継承してるやつ)のonMessageを購読する感じです。

using Febucci.UI.Core.Parsing;//EventMarkerを使うのに必要
//タグ検知用のイベント購読
_typewriterCore.onMessage.AddListener(OnMessage);

//タグ検知用のイベント購読解除
//_typewriterCore.onMessage.RemoveListener(OnMessage);
//タグ検知用メソッド
private void OnMessage(EventMarker eventMarker) {
  //eventMarker.nameで検知したタグを取得
  Debug.Log($"タグ検知 : {eventMarker.name}");
}


さらにタグの後に=を付ける事でパラメータを設定することも可能です。

(複数設定したい場合は=parameter,10みたいカンマ区切り)

画像を変える<?ChangeImage=NewTax><waitfor=1.0>、
もう一回画像を変える<?ChangeImage=OneChance><waitfor=1.0>、変わった?
private void OnMessage(EventMarker eventMarker) {
  Debug.Log($"タグ検知 : {eventMarker.name}, パラメータ: {string.Join(", ", eventMarker.parameters)}");
    
  //eventMarker.nameでタグを判別
  if(eventMarker.name == "ChangeImage") {
    //eventMarker.parameterからパラメータ取得
    var imageKey = eventMarker.parameters[0];
    _imageUI.Image.sprite = CommonSpriteProvider.GetEventSprite(imageKey);
  }
}


ただし、SkipTypewriterを使ってスキップするとイベントが発火しないので、



TriggerRemainingEventsを使って残っているイベントを実行する必要があります。

//文字送りをスキップして全文表示
_typewriterCore.SkipTypewriter();
        
//残っているタグイベントを実行
_typewriterCore.TriggerRemainingEvents();