2016-11-21 48 views
1

統一5.4.3f1。Observable生命週期管理 - 如何從輸入軸創建數據流?

我正在學習使用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編譯罰款。

我沒有看到兩者之間有太大的區別。我錯過了什麼?

回答

2

嗯,我很蠢。創建觀察和訂閱應該是兩個不同的東西。代碼在分離時編譯正確。

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