一个Observable()可以处理两种情况的订阅吗?

时间:2019-09-10 10:45:27

标签: c# unity3d unirx

我正在将反应式编程应用于Unity3D项目。

在InputField中输入字符将启用按钮,如果没有字符则将其禁用。 可以使用UniRx.Observable在一个流中处理此逻辑吗?

inputID.OnValueChangedAsObservable()
            .Where(x => string.IsNullOrEmpty(x) == false)
            .Subscribe(_ => buttonLogin.gameObject.SetActive(true));

inputID.OnValueChangedAsObservable()
            .Where(x => string.IsNullOrEmpty(x) == true)
            .Subscribe(_ => buttonLogin.gameObject.SetActive(false));

可以将这两种逻辑组合成一种逻辑吗?

请回复。谢谢。

1 个答案:

答案 0 :(得分:0)

是的,您可以使用Map运算符。

http://reactivex.io/documentation/operators/map.html

“通过对每个项目应用函数来转换Observable发出的项目”

Where替换为Map,并在map运算符内,将传递x变量,并从IsNullOrEmpty检查中返回布尔值。该布尔值将作为变量传入您的订阅中,您可以直接在setActive中使用。