Unity++blog.

UnityやC#とかについて学習したことを書いてます

enumとUniRxを使ってenumの値が変わった時に何かする

記憶が蘇ったため次のプロジェクトではenumつかおー思ったので、どんな感じで使うかテストしてみました。

 

Playerのステートを列挙型(enum)で管理して、ステートが変わったときになにかするというのを試してみました。

 

3つのスクリプトが書いてます。↓

上から

プレイヤーのステートクラス

イベントクラス

イベント発生時に処理するクラス

 

 

 

 

 実行してみました

f:id:nabesi777:20190430192002g:plain

 

処理実行のところが冗長だなーと思って下のコードを試したらこちらでも同じように動きました。

 

this.ObserveEveryValueChanged(x => Player.CurrentState)
 .DistinctUntilChanged()
 .Select(x => x)
 .Subscribe(x => {
   if (x == PlayerState.FullHp) {
      Debug.Log("元気もりもりご飯パワー");
   } else if (x == PlayerState.Dead) {
      Debug.Log("最後かもしれないだろ。

      だから、全部話しておきたいんだ(ティーダ)");
   }
});