// for uGUI(from 4.6) #if !(UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5) using System; using UnityEngine; using UnityEngine.UI; namespace UniRx { public static partial class UnityUIComponentExtensions { public static IDisposable SubscribeToText(this IObservable source, Text text) { return source.SubscribeWithState(text, (x, t) => t.text = x); } public static IDisposable SubscribeToText(this IObservable source, Text text) { return source.SubscribeWithState(text, (x, t) => t.text = x.ToString()); } public static IDisposable SubscribeToText(this IObservable source, Text text, Func selector) { return source.SubscribeWithState2(text, selector, (x, t, s) => t.text = s(x)); } public static IDisposable SubscribeToInteractable(this IObservable source, Selectable selectable) { return source.SubscribeWithState(selectable, (x, s) => s.interactable = x); } /// Observe onClick event. public static IObservable OnClickAsObservable(this Button button) { return button.onClick.AsObservable(); } /// Observe onValueChanged with current `isOn` value on subscribe. public static IObservable OnValueChangedAsObservable(this Toggle toggle) { // Optimized Defer + StartWith return Observable.CreateWithState(toggle, (t, observer) => { observer.OnNext(t.isOn); return t.onValueChanged.AsObservable().Subscribe(observer); }); } /// Observe onValueChanged with current `value` on subscribe. public static IObservable OnValueChangedAsObservable(this Scrollbar scrollbar) { return Observable.CreateWithState(scrollbar, (s, observer) => { observer.OnNext(s.value); return s.onValueChanged.AsObservable().Subscribe(observer); }); } /// Observe onValueChanged with current `normalizedPosition` value on subscribe. public static IObservable OnValueChangedAsObservable(this ScrollRect scrollRect) { return Observable.CreateWithState(scrollRect, (s, observer) => { observer.OnNext(s.normalizedPosition); return s.onValueChanged.AsObservable().Subscribe(observer); }); } /// Observe onValueChanged with current `value` on subscribe. public static IObservable OnValueChangedAsObservable(this Slider slider) { return Observable.CreateWithState(slider, (s, observer) => { observer.OnNext(s.value); return s.onValueChanged.AsObservable().Subscribe(observer); }); } /// Observe onEndEdit(Submit) event. public static IObservable OnEndEditAsObservable(this InputField inputField) { return inputField.onEndEdit.AsObservable(); } #if (UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2) /// Observe onValueChange with current `text` value on subscribe. public static IObservable OnValueChangeAsObservable(this InputField inputField) { return Observable.CreateWithState(inputField, (i, observer) => { observer.OnNext(i.text); return i.onValueChange.AsObservable().Subscribe(observer); }); } #else /// Observe onValueChanged with current `text` value on subscribe. public static IObservable OnValueChangedAsObservable(this InputField inputField) { return Observable.CreateWithState(inputField, (i, observer) => { observer.OnNext(i.text); return i.onValueChanged.AsObservable().Subscribe(observer); }); } #endif #if UNITY_5_3_OR_NEWER /// Observe onValueChanged with current `value` on subscribe. public static IObservable OnValueChangedAsObservable(this Dropdown dropdown) { return Observable.CreateWithState(dropdown, (d, observer) => { observer.OnNext(d.value); return d.onValueChanged.AsObservable().Subscribe(observer); }); } #endif } } #endif