(:3[kanのメモ帳]

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

(:3[kanのメモ帳]


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


Text Animatorでオリジナルのタグ(カスタムアクション)を実装する方法【Unity】【アセット】【Text Animator】


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


この記事でのバージョン
Unity 6000.0.34f1
Text Animator 2.2.1


はじめに

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


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


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

Text Animator for Unity - Unity Asset Store


このText Animatorには待ち時間や文字送り速度を変えるタグも用意されていますが、

2.5秒待ちますよ。<waitfor=2.5>
2.5秒待ちました!


オリジナルのタグとその処理を実装する事も可能です。

オリジナルタグの前、このあと1.5秒待ちます。
<original=1.5,2.0>ここから2倍速になります。


ということで今回は、そんなオリジナルのタグ(カスタムアクション)の実装方法の紹介です!





オリジナルのタグ(カスタムアクション)の実装方法

まず、ActionScriptableBaseを継承したクラスを、1つのタグにつき1つ作成します。

例えば、指定時間待った後に文字送り速度を変えるタグのクラスは以下のような感じになります。

(タグを設定した場所にテキストが到達したらDoActionが実行される感じ、actionを通じて引数も渡せる)

using UnityEngine;
using System.Collections;
using Febucci.UI;
using Febucci.UI.Actions;
using Febucci.UI.Core;
using Febucci.UI.Core.Parsing;

/// <summary>
/// オリジナルタグのサンプル
/// </summary>
[CreateAssetMenu, System.Serializable]
public class OriginalTagSample : ActionScriptableBase {
  
  public override IEnumerator DoAction(ActionMarker action, TypewriterCore typewriter, TypingInfo typingInfo) {
    //待機時間と文字送り速度を取得(引数が設定されている時のみ)
    var delay = 0f;
    var speed = 1f;
    if(action.parameters.Length > 0 && float.TryParse(action.parameters[0], out delay)){}
    if(action.parameters.Length > 1 && float.TryParse(action.parameters[1], out speed)){}    
    
    //文字送り速度を設定
    typingInfo.speed = speed;
      
    //delayの時間だけ待機
    yield return new WaitForSeconds(delay);
  }

}


スクリプトファイルを作成したら、Projectビューの生成メニューからアセットを生成します。


そしてその生成したアセットを選択し、Inspectorで任意のタグを設定します。

なお、小文字でないと機能しない事があるので注意が必要です。


あとは生成したアセットを、データベース(Actions Database)のEmpty Slotに設定すれば準備完了。


ちなみにデータベースはText Animator SettingsのDefault Databaseに設定されているやつで、


デフォルトだとそれぞれ以下の場所にあります。

Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset
Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset


あとは先ほど設定したタグをテキスト内で使うだけ。なお、引数は,で区切って渡します。

オリジナルタグの前、このあと1.5秒待ちます。
<original=1.5,2.0>ここから2倍速になります。