Upgrade to Pro — share decks privately, control downloads, hide ads and more …

非エンジニアにも分かる UniRx(ゆにあーるえっくす)/ UniRx for non-eng...

非エンジニアにも分かる UniRx(ゆにあーるえっくす)/ UniRx for non-engineers

UniRx(と言うか Rx)を非エンジニアの方にも伝わるように整理してみました。社内 LT 回で発表。

Ryuichi Jinushi

March 31, 2021
Tweet

More Decks by Ryuichi Jinushi

Other Decks in Programming

Transcript

  1. // 特徴:タイミングに関わる処理を書く void Update() { // 上ボタンが押されたらジャンプフラグを立てる } // 一定時間ごとに実行される処理を書く、特徴:物理演算系の処理を書く

    void FixedUpdate() { // ジャンプフラグが立ってたら上向きの力を加える } • ジャンプという一つの機能だけなのに複 数箇所に記述が分かれる • ジャンプフラグを持つ必要がある
  2. void Start() { this.UpdateAsObservable() .Where(/* 上ボタンが押されたら */) .Subscribe(/* ジャンプフラグを立てる */);

    this.FixedUpdateAsObservable() .Where(/* ジャンプフラグが立ってたら */) .Subscribe(/* 上向きの力を加える */); } • ジャンプという一つの機能だけなのに複 数箇所に記述が分かれる • ジャンプフラグを持つ必要がある
  3. // Update, FixedUpdate の併用 var up = this.UpdateAsObservable() .Select(_ =>

    Input.GetMouseButton(0)); // クリック状態 this.FixedUpdateAsObservable() .WithLatestFrom(up, (_, x) => x) // Update 時の検知を持ってくる .Where(x => x) // クリックされている時だけ .Subscribe(_ => Debug.Log("yes")); // やりたい処理