Programing/Unity(C#)

[C#] Press 입력 받기

hye3193 2024. 4. 2. 20:58

마우스 왼쪽 버튼을 길게 누르고 있는 경우를 판단하는 게 필요해서 기존의 InputManager를 수정하였다

public class InputManager
{
    public Action<Define.MouseEvent> MouseAction = null;

    private bool isPressed = false;
    private float _pressedTime;
    private float MIN_PRESS_TIME = 0.2f;

    public void OnUpdate()
    {
        if (Input.GetMouseButton(0))
        {
            isPressed = true;
            _pressedTime += Time.deltaTime;
            if (_pressedTime >= MIN_PRESS_TIME)
            {
                MouseAction.Invoke(Define.MouseEvent.LeftPress);
                isPressed = false;
            }
        }
        else
        {
            if (isPressed && MouseAction != null)
                MouseAction.Invoke(Define.MouseEvent.LeftClick);
            if (_pressedTime >= MIN_PRESS_TIME && MouseAction != null)
                MouseAction.Invoke(Define.MouseEvent.LeftPressUp);
                
            isPressed = false;
            _pressedTime = 0f;
        }
    }
}

임의로 정해놓은 시간(0.2초) 이상 누르고 있을 경우 click이 아니라 press로 invoke 해준다

누르고 있을 때 호출하는 Press와 누르고 있다가 뗐을 때 호출하는 PressUp을 각각 만들어두었다

 

* onUpdate는 Managers 스크립트에서 FixedUpdate마다 호출시키는 상태