カードゲームを作ったんですが、一定時間マウスオーバーでカードの情報を表示したかったのでUniRxでやってみました。結構スッキリ書けて満足。
そのゲームはこちら↓
unityroom.com
void Start() { const float mouse_over_time = 2.0f; var eventTrigger = gameObject.AddComponent<ObservableEventTrigger>(); eventTrigger .OnPointerEnterAsObservable() .SelectMany(_ => Observable.Timer(TimeSpan.FromSeconds(mouse_over_time))) .TakeUntil(eventTrigger.OnPointerExitAsObservable()) //PointerExitされたらストリームをリセットする .RepeatUntilDestroy(this.gameObject) // 死ぬまで以上を繰り返す .Subscribe(_ => { cardInformation.SetActive(true); }); eventTrigger .OnPointerExitAsObservable() .Subscribe(_ => { cardInformation.SetActive(false); }).AddTo(this.gameObject); }