DOTweenAnimationをUniRxのObserveEveryValueChangedを利用して動かしたい
下記のスクリプトをDOtweenAnimationがついたオブジェクトに張り付けて、PlayerScript内のDOtweenAnimationをDORestart();で動かそうとしています。
**DORestart()**自体は__ObserveEveryValueChanged__でplayerHPの変化を検知して実行したいです。
しかし、下記の画像の通りスタートメソッドを通った時点でなぜかDORestart()を実行してしまっています。
これがなぜ起きるのか教えていただきたいです。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UniRx; 5using DG.Tweening; 6public class PlayerHPShaker : MonoBehaviour 7{ 8 private int playerHP=0; 9 private DOTweenAnimation dot; 10 void Awake() 11 { 12 playerHP=PlayerScript.Instance.Player_HP; 13 Debug.Log("a"+playerHP); 14 } 15 void Start() 16 { 17 Debug.Log("s"+playerHP); 18 dot = GetComponent<DOTweenAnimation>(); 19 dot.autoPlay=false; 20 this.ObserveEveryValueChanged(x => x.playerHP) 21 .Where(_ => _ > 0) 22 .Subscribe(_ => PlayHPDOTween()); 23 } 24 void Update() 25 { 26 Debug.Log("u"+playerHP); 27 playerHP=PlayerScript.Instance.Player_HP;//ここで変数が変化 28 } 29 void PlayHPDOTween(){ 30 Debug.Log("揺らす"); 31 dot.DORestart(); 32 } 33}
試したこと
・上記にある通りDebug.Logで確認したところAnimationのAutoPlayが原因ではないです。
・whereの部分を.Where(x => x),.Where(x => x>0)に変えてもだめでした。
補足情報(FW/ツールのバージョンなど)
unity2019.4.8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/13 15:06
2021/05/16 07:09
2021/05/18 03:43