Unity New Input System

New Input System은 기존 유니티 Input System의 단점을 보완한 시스템이다
다양한 플랫폼에서 빠르게 컨트롤 설정을 변경할 수 있다!
기존 Inpuy System은 하나하나 코드로 수정해야했다..
 

패키지 시스템에서 인풋 시스템을 임포트하자.

그럼 이런 무시무시한 워닝 문구가 뜨는데
그냥 Yes누르면 된다.
 

그다음 프로젝트 세팅에 가보면 [Player] 창에 아래로 내려가다보면 Active Input Handling이라는 칸이 있는데 거기에 Input System Package(New)로 체크되어있을 것이다.
나는 Old버전의 인풋 시스템도 사용중이라 Both를 체크했다.

그다음 프로젝트 폴더 아래 [+]버튼을 누르고 아래로 내려가다 보면 Input Actions가 생겼을거다.
눌러보자!

이런 번개모양 아이콘이 그려져 있는 종이가 생겼다.

더블클릭해서 눌러보면 처음에는 아무것도 없다.
 

위 적혀 있는 순서대로 진행할 예정이다.

No Control Schemes를 누르면 Add Control Scheme가 나온다 누르자!

스키마 이름은 현재 플랫폼이 PC환경이기 때문에 PC라고 적고, List is Empty에 이제 PC환경에서 필요한 요소들을 추가하면 된다.
나같은 경우 키보드와 마우스만 필요하기 때문에, Keyboard, Mouse를 추가할거다.
 

Save를 누르자!
 

그다음 Action Maps [+]누르고
PlayerActionMap이라고 이름을 변경하자.
그다음 오른쪽에 Actions이 생겼는데 이녀석의 이름을 Move로 바꿔주자!

Move아래 토글을 펼쳐준 다음 안에 있는 내용물을 일단 지워준다!

그다음 Move의 액션 프로퍼티를 살펴보면 Action Type과 Control Type 2개가 있는데
키보드로부터는 값을 받아오기 때문에 Value를 선택하고 X, Y축만 사용하기 때문에 Vector2를 선택한다.
 
만약 Jump같은 경우 Action Type은 Button이 된다.
 

그다음으로 Move 액션의 [+]을 누른 후 2번째 줄(Add Up#Down...)을 선택한다.
 

이름은 Move와 관련되게 지어주며
Up : <No Binding> 을 클릭하자.(노바인딩은 해당키에 대응되는 키를 아직 설정하지 않았다는 뜻이다)
 
그다음 Path에 드롭다운을 누르고 돋보기에 W를 찾아주면 된다.
나머지도 똑같이 하면 된다.
 
설정은 끝났다.
움직일 오브젝트를 클릭하고.

Player Input 컴포넌트를 부착해준다.
Actions에다가 지금까지 만든 TestActions를 넣어주면 아래와같이 된다.

 

Send Messages, Broadcast Messages : 유니티의 Send Message기능을 사용하여 특정함수를 호출하는 방식.

Invoke Unity Events, Invoke C Sharp Events : 유니티나 C#의 이벤트 기능을 사용하는 방식.

 

스크립트 상단에는 반드시 이 친구가 있어야 한다
 
 

Send Messages 같은 경우 특정 키가 들어오면, 특정 함수를 실행한다
Broadcast Messages 같은 경우 하위 계층 오브젝트들까지 제어 가능
함수명은 On + Actions Name으로 구성
예를 들어, Move 액션이 실행되면 자동으로 OnMove라는 함수가 실행됨

 
void OnMove(InputValue value)
{
     Vector2 input = value.Get<Vector2>();
     Vector2 movedir = new Vector2(input.x, input,y);
}

이렇게 사용된다!