Tweenの終了待ちを、コルーチンを使って実装する方法を紹介します!
サンプルプログラムでは、一文字ずつ文字を表示するDOTextを例にしています。
他のTween関数でも同様の方法で、終了待ちをすることが出来るのでぜひ覚えていってください!
WaitForCompletion関数を使う
ボタン操作クラス
using System.Collections;
using UnityEngine;
//テキスト表示を開始するボタン
public class DOTextButton : MonoBehaviour
{
[SerializeField] private SampleDOText _sampleDOText;
private string _testStr = "DOTextで一文字ずつ表示しています!"; //表示する文字列
private float _duration = 3.0f; //表示を完了するまでの時間
//ボタンがクリックされたとき
public void ButtonClick()
{
//クリックされた時の処理を開始
StartCoroutine(ButtonClickCroutine());
}
//ボタンクリック時のコルーチン
private IEnumerator ButtonClickCroutine()
{
yield return _sampleDOText.ShowText(_testStr,_duration); //テキスト表示が終わるまで待機
Debug.Log("表示完了!");
yield break;
}
}
このクラスは、ボタンが押されたときに1文字ずつ文字表示をする命令を、この後紹介するDOText関数に伝えるためのものです。
テキスト表示クラス
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
//DOTweenを使って文字を1文字ずつ表示するクラス
public class SampleDOText : MonoBehaviour
{
[SerializeField] private Text _text;
private Coroutine _showTextCoroutine; //停止できるように保持しておく用
//テキスト表示を開始
public Coroutine ShowText(string text, float duration)
{
//テキスト表示を始める
_showTextCoroutine = StartCoroutine(ShowTextCoroutine(text, duration));
//コルーチンを返す
return _showTextCoroutine;
}
//DOTweenのDOTextを使って1文字ずつ表示する
private IEnumerator ShowTextCoroutine(string text, float duration)
{
_text.text = ""; //空文字で初期化
yield return _text.DOText(text, duration).SetEase(Ease.Linear).WaitForCompletion();
}
}
このクラスでは、1文字ずつテキストを表示する処理を、DOTextクラスを使って実行するクラスです。
「WaitForCompletion()」を「yield return」に渡すことで、文字が表示し終わるまで待機することが出来ます!
DOTweenの他の関数でも、同じ方法で待機することが出来ます。
お疲れさまでした!