티스토리 뷰

더블클릭 판정 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UniRx;
using UniRx.Triggers;
using System;
 
public class DoubleClick : MonoBehaviour {
 
    // Use this for initialization
    void Start () {
 
        var clickStream = this.UpdateAsObservable().Where(_ => Input.GetMouseButtonDown(0));
 
        clickStream
            .Buffer(clickStream.Throttle(TimeSpan.FromMilliseconds(200)))
            .Where(x => x.Count >= 2)
            .Subscribe(_ => Debug.Log("DoubleClick"));           
    }
}
 
cs


clickStream 은 매 Update 시 마우스 왼쪽 클릭이 있을 때 발생한다. 발생한 clickStream은 Buffer 에 저장된다. Buffer의 개방 조건은 throttle 이다.  위 코드의 throttle은 clickStream 이 발생한 뒤 0.2초 동안 새로운 clickStream이 발생하지 않으면 발생한다. 즉 첫 번째 클릭 후 0.2 초간 다른 클릭이 없었다면 throttle 이 발생되고 buffer 의 개수는 한 개 이므로 Where 절을 통과하지 못한다. 만약 첫 번째 클릭 이후 0.2초 안에 새로운 clickStream 이 발생했다면 buffer는 2 이상의 값을 가져 where 절을 통과하고 subscribe 된다.


실행 영상



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함