[Unity] Input System 사용법
메타버스 아카데미 수료하고 반년동안 유니티를 쉬었더니 플레이어 움직이는 것도 못하겠다.
뭐 직장 생활한다고 그런 것도 있지만 그래도 반년 이상 배운 건데 이대로 실력 썩히는 것도 싫고 해서 미니 프로젝트 하나 만들면서 다시 실력을 쌓고자 한다.
못본새에 유니티에서 'Input System' 이라는 패키지를 내놓았더라. 대충 읽어보니 Input.Manager의 업그레이드 버전으로 보인다. 예전에는 무조건 Update 함수 안에 Input값 받아내는 식으로 했었는데 이번에는 콜백 함수형으로 디바이스의 입력값을 받아내도록 한 것 같다.
위의 아키텍쳐를 보니 디바이스로부터 입력을 받으면 입력값은 별도의 메모리에 따로 저장되나 보다.
별도의 Input Runtime이 새로운 디바이스를 인식하면 Input Manager에게 새로운 디바이스를 찾았다고 동적으로 알려주나 보다.
위의 player Input에서 디바이스 입력을 설정한다. 키보드 뿐만 아니라 게임패드, 모바일 등 다양한 디바이스의 입력을 관리할 수 있다. 확실히 GUI 상으로 입력들을 관리할 수 있는 게 전보다 좋은 점 같다.
설치 방법
1. 상단메뉴의 Window --> Package Manager 클릭
2. 좌측상단에 '+' 오른쪽의 설정을 Packages: Unity Registry' 로 변경, 검색창에 Input System 검색
나는 이미 설치를 했기 때문에 우측 하단에 remove라고 되어있는데 미설치되어 있으면 Install이라고 되어있다.
3. 설치해 주자.
4. Hierarchy 창에 빈 오브젝트를 생성한 다음에 Inspector 창의 Add Component를 누른다.
5. Input 키워드를 넣어보자.
검색결과가 위와 같이 나오면 정상적으로 설치한 거다.
사용법
1. Inspector에서 Player Input을 가져온다.
처음 컴포넌트를 불러오면 위와 같이 기본 세팅이 된 상태로 불러와진다.
나머지 기능은 아직 사용해보지 않아서 잘 모르겠고 내 입맛에 맞는 Input을 만드는 방법만 알려주겠다.
2. Actions 메뉴에서 기본으로 세팅된 에셋을 빼준다.
그럼 아래쪽에 Create Actions 문구가 나오는데 이것을 클릭하자. 그리고 저장하자.
나는 Test_Action라는 이름으로 새 Action을 만들었다.
보면 이동, 시점, 발사, 점프 입력과 관련된 설정이 있는 것을 알 수 있다.
세부 정보를 확인해 보면 각 디바이스의 입력키가 자세하게 설명되어 있다. 키보드 설정은 WASD로 설정되어 있는 것을 볼 수 있다. 물론 입력 설정을 추가할 수도, 입력키를 바꿀 수도 있다.
3. 스크립트에서 콜백함수를 만들자.
Input System으로부터 입력값을 받아 오려면 위와 같이 콜백함수를 불러와야 한다.
별도로 입력값만 받는 스크립트를 만들어서 플레이어 객체에 넣어주는 게 좋을 것 같다.
더 알아볼 것
- UI Event를 어떻게 사용하는지 알아보자.
- 입력값 디버깅 방법을 찾아보자.
- 입력키 커맨드 모음도 하나의 이벤트로 만들 수 있을까?