IEnumerator CoWaitClick() { isWait = true; clickTime = 0f; while (true) { yield return(null); clickTime += Time.deltaTime; if (Input.GetMouseButtonDown(0)) { var clickable = GetClickables(InputEx.GetMouseWorld()).FindAll(x => x.isDouble).PeekMax(x => x.priority); if (clickable == null) { break; } OnDoubleClickAction?.Invoke(clickable); break; } if (clickTime > doubleInterval) { var clickable = GetClickables(InputEx.GetMouseWorld()).FindAll(x => x.isOnce).PeekMax(x => x.priority); if (clickable == null) { break; } OnOnceClickAction?.Invoke(clickable); break; } } isWait = false; }
private void Start() { ClickSystem.instance.OnOnceClickAction += (clickable) => { if (clickable != this) { return; } OnOnceClickAction?.Invoke(gameObject); }; ClickSystem.instance.OnDoubleClickAction += (clickable) => { if (clickable != this) { return; } OnDoubleClickAction?.Invoke(gameObject); }; }