Posted at

UniRX触りました

More than 1 year has passed since last update.


はじめに

定番UniRX(ユニアールエックス)ですが、触ったことのないにわかだったので触りましたレポートです。

使い方の詳細とか概念とかは素晴らしいまとめが既にありますため、そちらをご覧ください。


参考

UniRx入門

【Unite 2017 Tokyo】現実的なUniRx使いこなし術

34:00~からUniRXの話しが出てきます。


やってみた

今回は難しいことは考えず下記を参考にしながら、以前書いたコードのUpdate(一部)を置き換えました。

UniRx入門 その4 -Updateをストリームに変換する方法とメリット-

置き換え前


controller.cs

void Update () {

// 攻撃
if( Input.GetMouseButtonDown(0))
{
animator.SetTrigger("OnAttack");
}

//ジャンプ
if (controller.isGrounded && Input.GetKeyDown(KeyCode.Space))
{
animator.SetTrigger("OnJump");
}
}


置き換え後


controller.cs

// 

void Start ()
{
animator = GetComponent<Animator>();
controller = GetComponent<CharacterController>();

// 攻撃
this.UpdateAsObservable()
.Where(_ => Input.GetMouseButtonDown(0))
.Subscribe(_ =>
{
animator.SetTrigger("OnAttack");
attackAudio.Play();
_factory.Create();
});

//ジャンプ
this.UpdateAsObservable()
.Where(_ => controller.isGrounded && Input.GetKeyDown(KeyCode.Space))
.Subscribe(_ =>
_velocity = Vector3.zero;
isRizing = true;
animator.SetTrigger("OnJump");
});
}



感想

今回はUpdate置き換えただけですが、思いの他簡単に置き換えられたので使い勝手は良いなと思いました。

複雑な処理とかもスッキリ書けそうなので使えそうなところでは積極的に使って行きたい。