スポンサーリンク

【Unity】コルーチンでDOTweenの終了待ちをする方法

スポンサーリンク
Unity

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の他の関数でも、同じ方法で待機することが出来ます。

お疲れさまでした!

タイトルとURLをコピーしました