New Input System은 기존 유니티 Input System의 단점을 보완한 시스템이다
다양한 플랫폼에서 빠르게 컨트롤 설정을 변경할 수 있다!
기존 Inpuy System은 하나하나 코드로 수정해야했다..
![](https://blog.kakaocdn.net/dn/zXYtK/btrLuA8VOkO/C3uRXKSO5fz4iozyJdPilk/img.png)
패키지 시스템에서 인풋 시스템을 임포트하자.
![](https://blog.kakaocdn.net/dn/R6Qmn/btrLujTS7pN/5e0xPXue6PnXOjP0Um2kU1/img.png)
그럼 이런 무시무시한 워닝 문구가 뜨는데
그냥 Yes누르면 된다.
![](https://blog.kakaocdn.net/dn/cvsvbk/btrLqWE9KXs/McSXOoFq9ctVcCWjPhAUz1/img.png)
그다음 프로젝트 세팅에 가보면 [Player] 창에 아래로 내려가다보면 Active Input Handling이라는 칸이 있는데 거기에 Input System Package(New)로 체크되어있을 것이다.
나는 Old버전의 인풋 시스템도 사용중이라 Both를 체크했다.
![](https://blog.kakaocdn.net/dn/xLZXf/btrLtMvhAlR/XXAnok3jK1P12V8OhESVs0/img.png)
![](https://blog.kakaocdn.net/dn/9gmn6/btrLlF40LXQ/xaDCyVlmTwTqT9ePOsFnK0/img.png)
그다음 프로젝트 폴더 아래 [+]버튼을 누르고 아래로 내려가다 보면 Input Actions가 생겼을거다.
눌러보자!
![](https://blog.kakaocdn.net/dn/dz4lX7/btrLuxdj9BD/IW9EumvsKv1Yx73xkVBMA0/img.png)
이런 번개모양 아이콘이 그려져 있는 종이가 생겼다.
![](https://blog.kakaocdn.net/dn/3KiZs/btrLqXcXFLa/yxIPOjkDsfaVIx4lveWjO0/img.png)
더블클릭해서 눌러보면 처음에는 아무것도 없다.
![](https://blog.kakaocdn.net/dn/nNuKu/btrLr3D1L84/PuIAmSU1BvMvssAjltKeEk/img.png)
위 적혀 있는 순서대로 진행할 예정이다.
![](https://blog.kakaocdn.net/dn/dwprR4/btrLmzjqkeU/Pjkr7NImntkYvWc64aGS3k/img.png)
No Control Schemes를 누르면 Add Control Scheme가 나온다 누르자!
![](https://blog.kakaocdn.net/dn/lyRtd/btrLuxdklE6/cFI0Hpk0NjGAhTqiJuWgsK/img.png)
스키마 이름은 현재 플랫폼이 PC환경이기 때문에 PC라고 적고, List is Empty에 이제 PC환경에서 필요한 요소들을 추가하면 된다.
나같은 경우 키보드와 마우스만 필요하기 때문에, Keyboard, Mouse를 추가할거다.
![](https://blog.kakaocdn.net/dn/b49DzP/btrLsqF07I7/EnlmOWWTrlo1rzOOoBKPb0/img.png)
Save를 누르자!
![](https://blog.kakaocdn.net/dn/bu0Isp/btrLqc84QbT/2newp51euwqnoOs1U2Zcg0/img.png)
그다음 Action Maps [+]누르고
PlayerActionMap이라고 이름을 변경하자.
그다음 오른쪽에 Actions이 생겼는데 이녀석의 이름을 Move로 바꿔주자!
![](https://blog.kakaocdn.net/dn/btZzc3/btrLns5qSIB/7EIyqfl2xgxMl5FUHn5kN0/img.png)
Move아래 토글을 펼쳐준 다음 안에 있는 내용물을 일단 지워준다!
![](https://blog.kakaocdn.net/dn/b1aoIS/btrLqYbVNO0/O1v48jd1CJNcW6djgcNTC1/img.png)
그다음 Move의 액션 프로퍼티를 살펴보면 Action Type과 Control Type 2개가 있는데
키보드로부터는 값을 받아오기 때문에 Value를 선택하고 X, Y축만 사용하기 때문에 Vector2를 선택한다.
만약 Jump같은 경우 Action Type은 Button이 된다.
![](https://blog.kakaocdn.net/dn/eg2JjI/btrLufKJQrf/5LMk51nFEdYeyr93EEj5gk/img.png)
그다음으로 Move 액션의 [+]을 누른 후 2번째 줄(Add Up#Down...)을 선택한다.
![](https://blog.kakaocdn.net/dn/x21ES/btrLu8K7ecM/T84vEkeN5YoBDiz1qRko50/img.png)
이름은 Move와 관련되게 지어주며
Up : <No Binding> 을 클릭하자.(노바인딩은 해당키에 대응되는 키를 아직 설정하지 않았다는 뜻이다)
그다음 Path에 드롭다운을 누르고 돋보기에 W를 찾아주면 된다.
나머지도 똑같이 하면 된다.
설정은 끝났다.
움직일 오브젝트를 클릭하고.
![](https://blog.kakaocdn.net/dn/yNBRm/btrLlGv9aUl/ja4xVIYKGKCIdE9gZAoav0/img.png)
Player Input 컴포넌트를 부착해준다.
Actions에다가 지금까지 만든 TestActions를 넣어주면 아래와같이 된다.
![](https://blog.kakaocdn.net/dn/B1xsD/btrLoua37Pt/TCghk7dOuTgQ1HbksrgoA0/img.png)
![](https://blog.kakaocdn.net/dn/bj42we/btrLjjBrNKG/9T8MS1OEQXIOpMxXjvpvF1/img.png)
Send Messages, Broadcast Messages : 유니티의 Send Message기능을 사용하여 특정함수를 호출하는 방식.
Invoke Unity Events, Invoke C Sharp Events : 유니티나 C#의 이벤트 기능을 사용하는 방식.
![](https://blog.kakaocdn.net/dn/rE3Fm/btrLk5bLlFm/E5a3J7XTLe8iVDwZaVESM0/img.png)
스크립트 상단에는 반드시 이 친구가 있어야 한다
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);
}
이렇게 사용된다!