본문 바로가기
유니티 공부/Unity

Unity - Mouse입력 Action으로 처리해보기

by 코딩하는 돼징 2023. 9. 15.
반응형

Mouse 이벤트 처리하기

01 Define.cs에 MouseEvent 입력하기

public enum MouseEvent
{
    Press,
    Click,
}

02 변수 설정

public Action<Define.MouseEvent> MouseAction = null; // 마우스 입력
bool _pressed = false; // 상태를 저장

03 OnUpdate 메서드 설정

1) Define.MouseEvent.Press

마우스가 클릭된 경우 Define.MouseEvent.Press을 인수로 넘겨 액션에 등록된 함수들 실행

if(Input.GetMouseButton(0)) 
{
    MouseAction.Invoke(Define.MouseEvent.Press);
    _pressed = true;
}

2) Define.MouseEvent.Click

마우스가 클릭했다 뗀 경우 Define.MouseEvent.Click을 인수로 넘겨 액션에 등록된 함수들 실행

else
{
    if (_pressed)
        MouseAction.Invoke(Define.MouseEvent.Click); 
    _pressed = false;
}

04 Clear시켜주기

public void Clear()
{
    MouseAction = null;
}

05 Manager에서 OnUpdate 및 Clear 실행

Manager.cs

void Update()
{
    _input.OnUpdate();
}
public static void Clear()
{
    Input.Clear();
}

06 MouseAction에 함수 등록

PlayerController.cs

void Start()
{
    Manager.Input.MouseAction -= OnMouseClicked;
    Manager.Input.MouseAction += OnMouseClicked;
}

07 MouseEvent 종류에 따른 이벤트 동작 수행

void OnMouseClicked(Define.MouseEvent evt)
{
    if (evt == Define.MouseEvent.Press)
    {
        // 마우스를 누르는 이벤트가 발생했을 때 실행할 코드
    }
    else if (evt == Define.MouseEvent.Click)
    {
        // 마우스 클릭 이벤트가 발생했을 때 실행할 코드
    }
}

 

 

 

 

 

 

참고 :  본 내용은 MMORPG  PART3 강의를 수강하여 작성하였습니다.

https://www.inflearn.com/course/mmorpg-%EC%9C%A0%EB%8B%88%ED%8B%B0/dashboard

 

 

 

 

 

 

 

반응형

댓글