1

统一 5.4.3f1。

我正在学习使用 UniRx 来定位 Unity 的反应式编程。我试图从输入轴创建一个简单的数据流的那一刻。

   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);

我看不出两者有太大区别。我错过了什么?

4

1 回答 1

2

好吧,我很愚蠢。创建 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);
}
于 2016-11-21T10:03:33.527 回答