• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

OnMouseEVent질문

21.12.26 13:53 작성 조회수 157

0

현재 Update문안에서는 PlayerState의 경우만들 계속 받으면서 어떤 상태인지에 따라서

UpdateMoving이나 UpdateIdle와 같은 함수들을 호출을 하고있는데

 

게임실행시 클릭이 먼저 일어나야 OnMouseEvent같은 함수가 

실행이 되어서 해당 마우스 액션이 계속 누르는 상태인지 클릭인지 뭐 그런것을 구별하고 그이후 해당 상태의 함수가 호출되는 것 까지는 이해가 되었습니다.

 

그런데 OnMouseEvent와 같은 함수는 Update문같은데서 실시간으로 받지 않고있는데 

 

InputManager에서 MouseAction != null일때 

이런식으로 Invoke로 어떤 마우스 이벤트인지 알려주고있는데 

Invoke를 하게되면 다른 파일(PlayerController와 같은데서)에서 따로 호출을 하지 않아도 자동으로 호출이 되는 것인가요??

답변 1

답변을 작성해보세요.

0

우선 너무 많은 사람들의 혼동을 야기해서
InputManager는 다음 강의에서 사라질 예정입니다.

저 부분이 이해가 안  가신다면
delegate 혹은 콜백 방식 문법을 복습해보시면 됩니다.
MouseAction에 원하는 콜백 함수를 매핑해주면
나중에 MouseAction.Invoke()가 호출될 때 해당 함수가 호출됩니다.

starkshn님의 프로필

starkshn

질문자

2021.12.27

지금 MouseAction에 콜백함수를 매핑을 해주었는데

이렇게

이렇게 if문으로 매핑을 해준것 까지는 이해가 갑니다.

if(!_presssed)

                {

                    MouseAction.Invoke(Define.MouseEvent.PointerDown);

                    _pressedTime = Time.time;

                }

 

1)이코드가 지금 _pressed가 true일때  Invoke함수로 Define.MouseEvent.PointerDown이것을 매핑을 한것이 맞나요?

 

2) 위와 같이 매핑을 하였을 경우 PlayerController안에 있는 함수들이 어떻게 

호출이 되는지를 모르겠습니다.

 

지금까지 이해한것은 콜백함수에 매핑을 해주면 해당(맞는 호출이)있을경우 매핑한 것을 넘겨주는 거까지는 이해했는데 공부하는 코드에서 PlayerController의 OnMouseEvent_IdleRun함수나 OnMouseEvent의 함수의 인자에 Define.MouseEvent evt이것이 왜 어떻게 들어가는지를 모르겠습니다