게임 개발/유니티

유니티) MissingMethodException: Method 'Player.OnTouch' not found.

UniCoti(유니코티) 2024. 8. 27. 05:31
반응형

에러 사진

아마 이 에러를 본 사람들의 절대다수는 Input System을 사용 중에 있을 것이다.

에러는 인풋시스템의 세팅을 완료한 이후 스크립트에서 On--- 함수를 찾아야 하는데

Player Input 컴포넌트에서 그걸 찾지 못해서 발생하는 에러이다. 해결해 보자.


player input이 원인

에러를 보면 알겠지만, 나는 Touch라는 이벤트 때문에 오류가 발생했다.

에러는 Player Input에서 일으키는 것이다.

Touch

이렇게 인풋 시스템에서 키 매핑과 이름도 잘 지었고,

코드

이렇게 스크립트에서 이름도 완벽하게 잘 지었음에도 저런 오류가 발생한다.

이건 어떻게 해결할 수 있을까?

 

바꾼 코드

유니티의 설정을 유지하고(Send Message) 이 현상을 해결하고 싶다면

위와 같이 바꿔주면 된다. InputValueBehavior가 다를 때 쓰는 클래스이다.

잘 구분해서 사용하자.

해결법

Player InputBehavior 세팅을 Send Messages에서 Invoke Unity Events로 바꿔주면

에러가 사라지며 문제가 간단히 해결될 것이다.

이벤트 추가하기

Send Messages는 이름과 대조해서 함수를 찾는 것이고

Invoke Unity Events는 유니티의 이벤트 시스템으로 찾는 거라서 그렇다.

Events 화살표를 열어서 이벤트를 대응해 주면 된다.


여기까지 MissingMethodException: Method 'Player.OnTouch' not found. 에 대해서 알아봤다.

개발을 오랜만에 다시 시작하니 오류나 새롭게 알아가는 지식이 많아 기분이 좋다.

예전에는 하루종일 구글링했었는데 요즘은 AI가 있어서 좋은 것 같다.

 

유니티 6에서 인풋 시스템이 필수가 되어 사용하고 있는데,

실무적으로는 처음 써보는 입장에서 생각보다 사용하기 어려운 것 같다.

구버전 인풋의 발전형이었으면 적응하기 편했을 텐데 아쉽다.


이상으로 도움이 되었길 바라며,


끝.

반응형