Unity 5.4.3f1。
我正在学习以UniRx为目标的反应式编程。当我试图从输入轴创建一个简单的数据流时。
public IObservable<float> Movement;
void Start ()
{
this.Movement = Observable.EveryUpdate()
.Select(_ => Input.GetAxis("Horizontal") )
.Subscribe(f => Debug.Log(f))
.AddTo(this);
}我得到了这个错误:
Error CS0266: Cannot implicitly convert type `System.IDisposable' to `UniRx.IObservable<float>'. An explicit conversion exists (are you missing a cast?) (CS0266) (Assembly-CSharp)来自UniRx的示例可以很好地编译。
Observable.IntervalFrame(30).Subscribe(x => Debug.Log(x)).AddTo(this);我看不出两者有多大的区别。我遗漏了什么?
发布于 2016-11-21 18:03:34
好吧,我是愚蠢的。创建observable和订阅应该是两件不同的事情。当它们分开时,代码编译得很好。
public IObservable<float> Movement;
void Start ()
{
this.Movement = Observable.EveryUpdate()
.Select(_ => Input.GetAxis("Horizontal") )
.Where( f => f > 0.01f || f < -0.01f);
this.Movement.Subscribe(f => Debug.Log(f))
.AddTo(this);
}https://stackoverflow.com/questions/40717332
复制相似问题