今回はUnityでDOTween(HOTween v2)を利用して、テキスト文字のスケール・色を変更してみます。
はじめに
Unityのバージョンは2021.3.14f1です。
以前、アニメーションを利用してテキスト文字のスケール・色変更をしました。
今回はDOTweenを利用して同じように実装してみます。
アセットの追加
まずはUnityAssetStoreにアクセスして、DOTweenをマイアセットに追加します。

FREEバージョンを選び「Add to My Assets」。

Unity画面でPackageManagerのMyAssetsの中からDOTweenを選択してimportします。

全てにチェックを入れた状態でImport。

Import終了後、UtillityPanelを開きます。

「Setup DOTween…」を選択。

今回はAudioなどは使わないですが、全てにチェックをいれてApplyします。

これでDOTweenを使う準備が完了です。
実装開始
ここから実際に作成していきます。
UIの作成
Hierarchyで右クリックして、「UI」→「Text-TextMeshPro」を追加。

位置(RectTransform)やサイズ(FontSize)などを変更して下記の様な感じにします。

スケール変更スクリプト
下記スクリプトを作成。
using UnityEngine; using DG.Tweening; using TMPro; public class FontManager : MonoBehaviour { [SerializeField] private TextMeshProUGUI _startTxt; void Start() { _startTxt.transform .DOScale(new Vector3(1.5f, 1.5f, 1.0f), 0.5f) .SetLoops(-1, LoopType.Yoyo) .SetEase(Ease.Linear); } }
Canvasにアタッチして、パラメータをセットします。

実行すると下記の様になります。

簡単な解説
「DOScale」でスケールを変更しています。0.5秒の時間をかけて1.5にスケールを変更。
下記の様な書き方でもOK
.DOScale(1.5f, 0.5f)
「SetLoops」は繰り返しの設定です。-1で永久に繰り返し、LoopTypeでスケール変更後の動きを指定します。Yoyoは元に戻る動きをします(1.5fまでスケールが徐々に増え、1.5fになったら1fまで徐々に減る)。
「SetEase」は動きの加減速ですね。どのように動くかというもので、デフォルト(何もセットしない)は「Out.Quad」となります。今回は「Ease.Linear」で直線的な加減速(一定)にしています。
色変更スクリプト
色の変更をスクリプトに加えてみます。
using UnityEngine; using DG.Tweening; using TMPro; public class FontManager : MonoBehaviour { [SerializeField] private TextMeshProUGUI _startTxt; void Start() { _startTxt.transform .DOScale(1.5f, 0.5f) .SetLoops(-1, LoopType.Yoyo) .SetEase(Ease.Linear); TextColorChange(); } private void TextColorChange() { _startTxt .DOColor(ChangeColor(), 0.5f) .OnComplete(TextColorChange); } private Color ChangeColor() { Color nowColor = _startTxt.color; if (nowColor == Color.white) return Color.red; else if (nowColor == Color.red) return Color.blue; else if (nowColor == Color.blue) return Color.green; else if (nowColor == Color.green) return Color.yellow; else return Color.white; } }
実行すると下記の様に。

簡単な解説
「DOColor」で色を変更、指定した色に0.5秒かけて変更しています。
_startTxt .DOColor(ChangeColor(), 0.5f) .OnComplete(TextColorChange);
「OnComplete」は完了した時のコールバックですね。「色を変更したら次の色をセットする」と言うのを繰り返しています。
DOTweenは他にもスクリプトで簡単にアニメーションが出来るので今後も随時書いていこうと思います。