#はじめに
キー入力ってUpdateに
if(Input.GetKey(KeyCode.A)){
//なんかの処理
}
とか
UniRxを使うときは
Observable.EveryUpdate()
.Where(_ => Input.GetKey(KeyCode.A))
.Subscribe(_ => {
//なんかの処理
});
this.UpdateAsObservable()
.Where(_ => Input.GetKey(KeyCode.A))
.Subscribe(_ => {
//なんかの処理
});
みたいな感じだと思います。(?)
UniRxを使う場合はEveryUpdate等をいくつも書くことになって不便です。
ということで専用のストリームソースを作れるようにしました。
#InputをIObservableとして扱う
##用意するもの
UniRx
https://github.com/euglenach/InputAsObservable
##概要
対応しているメソッドは以下のものになります
- GetKey,GetKeyDown,GetKeyUp
- anyKey,anyKeyDown
- Axis,AxisRaw
- GetMouseButton,GetMouseButtonDown,GetMouseButtonUp
- GetButton,GetButtonDown.GetButtonUp
##書き方
名前空間: UniRx.Triggers
###静的メソッド
例
InputAsObservable.GetKey(KeyCode.A).Subscribe(_ => Debug.Log("key:A")); //GetKey
InputAsObservable.AnyKey.Subscribe(_ => Debug.Log("anyKey")); //anykey
InputAsObservable.Axis("Vertical").Subscribe(y => Debug.Log("Axis y:" + y)); //Axis
InputAsObservable.GetMouseButton(0).Subscribe(_ => Debug.Log("mouse0")); //GetMouseButton
###Componentの拡張メソッド
例
this.OnKeyAsObservable(KeyCode.D).Subscribe(_ => Debug.Log("key:D")); //GetKey
this.OnAnyKeyAsObservable().Subscribe(_ => Debug.Log("anyKey")); //anykey
this.OnAxisAsObservable("Vertical").Subscribe(y => Debug.Log("Axis:" + y)); //Axis
こっちは、ComponentがDestroyすると自動で購読がDisposeされます。
#更新履歴
・2019/09/07 GetButton系メソッドにも対応しました