Unity::UniRx自分用メモ::基礎、Where、Select、TakeWhile

参考資料
コードの機能メモ
using UniRx;
using UniRx.Triggers;
void Start () {
//Returnは、なんらかの値をSubscribe内に流し込む機能
//今回はVenctor2(1,1)
Observable.Return(new Vector2(1, 1))
.Subscribe(v => gameObject.transform.position = v);
//インデント一個分空けて、Subscribe実装
//Subscribe(ラムダ式)で出力を決定
this.UpdateAsObservable().Subscribe(_ => Move(0.01f, 0));
//フレームごとにSubscribe。移動する関数Moveで処理。
}
void Update(){
}
//UpdateAsObservable()があるので使わなくなる?!
public void Move(float dx, float dy) //引数にフロート入れて
{
gameObject.transform.position += new Vector3(dx, dy, 0);
//transform.positionで座標を引数分移動
}
Observable.Return・・・.Subscribeで初期位置指定して、.UpdateAsObservable() でフレームごとに移動。 #UniRx #Unity pic.twitter.com/88I7s14lLQ
— mawa (@k_mawa82) 2018年4月6日
いくつか便利なメソッドをピックアップ
Where
//クリックされてたら(されているときだけ)、 .Where(_ => Input.GetMouseButton(0)) .Subscribe(_ => Move(0.01f, 0)); //Subscribeへ
Select
//Selectで値を2に指定 .Select(_ => 2.0f) //floatじゃないとエラーになった(たぶん) .Subscribe(l => Move(0.01f * l, 0)); //float同士の演算にする必要あり?!(とりあえずこれで動いた) //Subscribeへ //0.01f * l
TakeWhile
//gameObject.transform.position.x <= 4の間は値を流す .TakeWhile(l => gameObject.transform.position.x <= 4 .Select(_ => 2.0f)) //Selectで値を2に指定 .Subscribe(l => Move(0.01f * l, 0)); //float同士の演算にする必要あり?!(とりあえずこれで動いた) //Subscribeへ //0.01f * l
引き続きUniRx基礎 だんだん便利さの理解が深まってきた!
— mawa (@k_mawa82) 2018年4月6日
.TakeWhile(l => gameObject.transform.position.x <= 4 //xが4以下のときだけ
.Select(_ => 2.0f))
.Subscribe(l => Move(0.01f * l, 0)); //Selectの比率で 右に移動 #Unity #UniRx pic.twitter.com/Yh2SgNByxU