@Baiteen
ReactiveExtensionsがUnityでも使えるってのを今更知ったので、今更ながら使ってみた。その8。
やりたいこと
ReactiveExtensionsを使ってクリック回数が偶数なら赤のCubeを、奇数なら青のCubeを動かす。前回の記事からちょっとしか変わってないので、変更分だけ書くことにした。
変更したところ
SphereScriptのOnMouseDownAsObservableの文を以下のように変更する。//クリック回数のストリームとして変数に保持 var clickCountStream = OnMouseDownAsObservable () .Buffer (OnMouseDownAsObservable ().Throttle (System.TimeSpan.FromMilliseconds (250))) .Select (xs => xs.Count); //クリック回数が偶数なら、クリック回数に比例した右向きの力を赤い四角に加える clickCountStream .Where(cnt => cnt % 2 == 0) .Do(cnt => redRigidbody.AddForce(Vector3.right * cnt * 10)) .Subscribe (t=>Debug.Log(t)); //クリック回数が奇数なら、連打イベントを発生させる clickCountStream .Where(cnt => cnt % 2 != 0) .Do(cnt => OnBarrage(new BarrageEventArgs(cnt))) .Subscribe (t=>Debug.Log(t)); //クリック回数をテキストにセット clickCountStream .Do(cnt => text.text = string.Format ("{0} clicks", cnt)) .SelectMany(cnt => //1秒かけて0→1、また1秒かけて1→0ってなってほしいんだけど、0→1、1→2ってなる。意味不明。 TakeSec(1).Do(t=>text.setA(t)).Last().SelectMany(_=>TakeSec(1).Do(t=>text.setA(1-t))) ) .Subscribe (t=>Debug.Log(t));
これで完成。
今回はうに部屋に投稿するのは辞めました。ランキングにノイズが入ってしまうので。。。
適当に実行してください。