「Unity/UniRx/値変更検知」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→値変更検知サンプル) |
|||
行1: | 行1: | ||
+ | ==値変更検知の方法== | ||
+ | ReactivePropertyでもできるが、ObserveEveryValueChangedを、使ったサンプルを紹介。ちなみに、ObserveEveryValueChangedのほうが、コードが、わかりやすい。 | ||
+ | |||
+ | 参考:https://nekogeek.jp/reactive-property-vs-observe-every-value-changed/ | ||
+ | |||
==値変更検知サンプル== | ==値変更検知サンプル== | ||
IsCompletedが、trueになったときに、検知。 | IsCompletedが、trueになったときに、検知。 |
2022年2月16日 (水) 21:37時点における版
値変更検知の方法
ReactivePropertyでもできるが、ObserveEveryValueChangedを、使ったサンプルを紹介。ちなみに、ObserveEveryValueChangedのほうが、コードが、わかりやすい。
参考:https://nekogeek.jp/reactive-property-vs-observe-every-value-changed/
値変更検知サンプル
IsCompletedが、trueになったときに、検知。
詳しくは、1フレーム内で発生した複数回の変動は検知できず、前フレームと今フレームの変化のみ検知できるっぽい。
参考:https://qiita.com/toRisouP/items/d0d32cf674a00f3a8427
sampleClient.ObserveEveryValueChanged(x => x.IsCompleted) .Subscribe(isCompleted => { // 値が変更が入ると処理される if (!isCompleted) return; Debug.Log("isCompleted=" + isCompleted); Debug.Log("sampleClient.Url=" + sampleClient.Url); }) .AddTo(gameObject);
全体サンプル
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.Request(); sampleClient.ObserveEveryValueChanged(x => x.IsCompleted) .Subscribe(isCompleted => { // 値が変更が入ると処理される if (!isCompleted) return; Debug.Log("isCompleted=" + isCompleted); Debug.Log("sampleClient.Url=" + sampleClient.Url); }) .AddTo(gameObject); } }