DOTween.Toとは?
変数を指定した時間にわたって徐々に変化させる関数です。これにより、
- HPバーの作成
- 画面を徐々に暗くする
などができるので便利です。
参考
本記事はこちらのDOTweenの公式ドキュメントを参考にして作成しました。dotween.demigiant.com
使い方(引数など)
スクリプトで使用する際は以下の様に記述します。
DOTween.To(() => ini, (x) => a = x, end, t);
引数などについての説明をこちらに示します。
第2引数のラムダ式における引数は自由ですが、xとして説明をしています。
引数番号 | 機能 |
---|---|
1 | xの初期値をラムダ式により取得 ()=>iniとすれば、xの初期値はiniとなります。 |
2 | 変化させたい変数を指定 (x)=>a = xとしているので、aにはxが代入されます。 |
3 | xの最終値 xはendまで変化します。 |
4 | 変化にかかる時間を秒単位で設定 tとすればt秒かけて値を変化させる。 |
注意点など
- 第2引数のxはini~endまでt秒かけて変化します。
- ini~endまで変化するのはaではなく、xという点に注意しましょう。
- aはxに格納された値を逐一代入することで変化しています。
サンプルコード
①指定した変数(a)を指定した値まで変化させる。
- 最も多いであろうパターン。
- 以下のコードではaの初期値は変化させないので、ini=aである点に注意
using UnityEngine; using DG.Tweening; public class Sample1 : MonoBehaviour { [SerializeField] float a = 0; private void Update() { //キーボードの「A」を押したら開始 if (Input.GetKeyDown(KeyCode.A)) { //5秒かけてaを100まで変化させる DOTween.To(() => a, (x) => a = x, 100, 5); } } }
実行結果
② でxを変化させたときのyの値
- を の範囲で5秒かけて変化させたときのyの値を見ていきます。
- このパターンは少ないですが、To関数における第2引数の記述の仕方の理解に最適です。
using UnityEngine; using DG.Tweening; public class Sample2 : MonoBehaviour { [SerializeField] float y; private void Update() { //キーボードの「A」を押したら開始 if (Input.GetKeyDown(KeyCode.A)) { float xIni = 1, xEnd = 10, t = 5; //5秒かけてxを1~10まで変化させ、y=x^2を更新 DOTween.To(() => xIni, (x) => y = x * x, xEnd, t); } } }
実行結果
③コルーチンでの利用
- コルーチンなどと併用して「To関数を実行した後に別の関数を実行する」といったことが可能です。
- HPバーを減らした後にテキストを表示するなど、かなり応用が利きます。
yield return DOTween.To(~).WaitForCompletion();
とすることでTo関数の処理が終了するまで待機できます。
ソースコード(aの変化が終了したらbを変化させる)
using System.Collections; using UnityEngine; using DG.Tweening; public class Sample3 : MonoBehaviour { [SerializeField] float a, b; private void Update() { //キーボードの「A」を押したら開始 if (Input.GetKeyDown(KeyCode.A)) { StartCoroutine(Cor()); } } IEnumerator Cor() { //aを1から10まで3秒かけて変化させる yield return DOTween.To(() => 0.0f, (x) => a = x, 10.0f, 3).WaitForCompletion(); //bを4から1まで2秒かけて変化させる yield return DOTween.To(() => 4.0f, (x) => b = x, 1.0f, 2).WaitForCompletion(); //aに適当な値を代入 a = -2; } }
実行結果
応用例
応用すればHPバーを作れたりもします。
こちらの記事で作成しているので参考にしてください。
kiironomidori.hatenablog.com