Unity

UnityのuGUIのButtonを拡張メソッドを使って利用しやすくする

UniRxとuGUIの組み合わせは非常に使いやすいのですが、もっと使いやすくする為に拡張メソッドを使用して、より使いやすくしてみました。

ボタンが連打されたときは一回のみ判定したい、もしくはちょっと間が空いてからボタンを有効にしたい、ボタンの長押しを検知したいといった要望があった為実装してみました。

ボタンを一度のみ、もしくは指定時間おいたもののみ判定する

ButtonClickIntentをenumで定義しています。

OnlyOneTap(一度のみ)の場合はFirst()で連打されたものの中で最初だけを取得します。

IntervalTap(一定時間を空ける)場合は指定した時間(コードでは0.5秒)の間は処理を受け付けないようにしています。

ボタンが長押しされたということを判定する

ボタンが押されて(OnPointerDownAsObservable)から、離される(OnPointerUpAsObservable)までの時間をTimerで計測し、所定の時間が経過していたら長押しされたという判定にしています。