我正在将反应式编程应用于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));
可以将这两种逻辑组合成一种逻辑吗?
请回复。谢谢。
答案 0 :(得分:0)
是的,您可以使用Map
运算符。
http://reactivex.io/documentation/operators/map.html
“通过对每个项目应用函数来转换Observable发出的项目”
将Where
替换为Map
,并在map运算符内,将传递x
变量,并从IsNullOrEmpty
检查中返回布尔值。该布尔值将作为变量传入您的订阅中,您可以直接在setActive
中使用。