「Unity/UniRx/値変更検知/ObserveEveryValueChanged」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「 ==ObserveEveryValueChangedを使った値変更検知サンプル== IsCompletedが、trueになったときに、検知。 <pre> sampleClient.ObserveEveryValueChanged(x...」) |
(→ObserveEveryValueChangedを使った全体サンプル) |
||
行51: | 行51: | ||
} | } | ||
</pre> | </pre> | ||
+ | |||
+ | 注意:SampleClientが、MonoBehaviourを、継承していると反応しなくなる。 |
2022年11月24日 (木) 03:42時点における版
ObserveEveryValueChangedを使った値変更検知サンプル
IsCompletedが、trueになったときに、検知。
sampleClient.ObserveEveryValueChanged(x => x.IsCompleted) .Subscribe(isCompleted => { // 値が変更が入ると処理される if (!isCompleted) return; Debug.Log("isCompleted=" + isCompleted); Debug.Log("sampleClient.Url=" + sampleClient.Url); }) .AddTo(gameObject);
ObserveEveryValueChangedを使った全体サンプル
using UnityEngine; using UniRx; public class ChangeValueScene : MonoBehaviour { class SampleClient { public bool IsCompleted = false; public string Url = "ttp://example.com"; public void Request() { IsCompleted = true; } } void Start() { var sampleClient = new SampleClient(); sampleClient.ObserveEveryValueChanged(x => x.IsCompleted) // .Skip(1) // 初期値を検知を飛ばしたい場合 .Subscribe(isCompleted => { // 値が変更が入ると処理される if (!isCompleted) return; Debug.Log("isCompleted=" + isCompleted); Debug.Log("sampleClient.Url=" + sampleClient.Url); }) .AddTo(gameObject); // 5秒後に遅延実行 Observable.Timer(System.TimeSpan.FromSeconds(5)) .Subscribe(_ => { sampleClient.Request(); }).AddTo(gameObject); } }
注意:SampleClientが、MonoBehaviourを、継承していると反応しなくなる。