public class ObservableTest : MonoBehaviour
{
[SerializeField] Button button;
public IObservable<Unit> OnClick { get { return button.OnClickAsObservable(); } }
[SerializeField] Button returnTextButton;
public IObservable<string> OnClickText
{
get
{
return returnTextButton
.OnClickAsObservable()
.Select(_ => return "SelectでStringをとったり");
}
}
[SerializeField] Slider slider;
public IObservable<float> OnSlide { get { return slider.OnValueChangedAsObservable(); } }
[SerializeField] Toggle toggle;
public IObservable<bool> OnToggle { get { return toggle.OnValueChangedAsObservable(); } }
public IObservable<Unit> OnStart { get { return onStart; } }
Subject<Unit> onStart = new Subject<Unit>();
void Start()
{
onStart.OnNext(Unit.Default);
}
}
public class ObserverTest
{
public void Init(ObservableTest observable)
{
observable.OnClick.Subscribe(_ => Debug.Log("OnClick"));
observable.OnSlide.Subscribe(f => Debug.Log("OnSlide:" + f.ToString()));
observable.OnToggle.Subscribe(b => Debug.Log("OnToggle:" + b.ToString()));
observable.OnStart.Subscribe(_ => Debug.Log("Start"));
}
}