유니티의 New Input System은 다양한 플랫폼 환경에서 사용자의 입력을 처리하는 시스템이다.
[Package Manager]에서
Input System을 추가해 준다.
폴더를 생성하고 하위에 [Create] - [Input Actions]를 추가한다.
이름을 변경하고 생성한
Input Action을 클릭 후 [+] 버튼을 눌러서 원하는Action을 추가할 수 있다.
Action Type은 어떤 것을 기준으로 키 입력이 됐는지 정하는 옵션이다.
Control Type은 Value로 반환할 자료형을 정하는 옵션이다.
Move의 입력을 [W,A,S,D]로 입력받게 설정하는 부분이다.
Path를 수정해서 입력받을 키를 설정할 수 있다.
마우스의 움직임을 입력 받는 방법이다.
설정이 끝나면 [Save Asset]을 클릭하고
먼저 [Player Input] 컴포넌트를 입력받을 오브젝트에 할당해 준다.
입력을 처리하는 방식은 4가지
- Send Messages : 같은 오브젝트 안에 있는 컴포넌트 들에게 메시지를 전달하는 방식
- Broadcast Message : 하위 계층의 오브젝트에도 메시지를 보낸다.
- Invoke Unity Events : 유니티의 이벤트 방식으로 함수를 등록해서 사용가능하다.
- Invoke C# Envets : C#의 이벤트 기능을 사용한 방식
호출되는 함수에서
InputValue를 통해 키가 눌렸는지, 마우스의 위치가 어디인지, 움직임 등 확인할 수 있다.
void OnFire(InputValue inputValue)
{
// UI에 마우스가 올라가 있을 때 return
if (EventSystem.current.IsPointerOverGameObject())
return;
isAttacking = inputValue.isPressed;
}