Unity

[Unity] Input System 사용법

권벡터 2023. 6. 26. 23:17

메타버스 아카데미 수료하고 반년동안 유니티를 쉬었더니 플레이어 움직이는 것도 못하겠다. 

뭐 직장 생활한다고 그런 것도 있지만 그래도 반년 이상 배운 건데 이대로 실력 썩히는 것도 싫고 해서 미니 프로젝트 하나 만들면서 다시 실력을 쌓고자 한다. 

 

Input system package 문서

 

못본새에 유니티에서 'Input System' 이라는 패키지를 내놓았더라. 대충 읽어보니 Input.Manager의 업그레이드 버전으로 보인다.  예전에는 무조건 Update 함수 안에 Input값 받아내는 식으로 했었는데 이번에는 콜백 함수형으로 디바이스의 입력값을 받아내도록 한 것 같다.

 

자세한 정보는 여기를 클릭

 

Input System Low Level Architecture

 

위의 아키텍쳐를 보니 디바이스로부터 입력을 받으면 입력값은 별도의 메모리에 따로 저장되나 보다.

별도의 Input Runtime이 새로운 디바이스를 인식하면 Input  Manager에게 새로운 디바이스를 찾았다고 동적으로 알려주나 보다. 

 

input system player input 탭

위의 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으로부터 입력값을 받아 오려면 위와 같이 콜백함수를 불러와야 한다. 

별도로 입력값만 받는 스크립트를 만들어서 플레이어 객체에 넣어주는 게 좋을 것 같다. 

 

더 알아볼 것 

  1. UI Event를 어떻게 사용하는지 알아보자. 
  2. 입력값 디버깅 방법을 찾아보자. 
  3. 입력키 커맨드 모음도 하나의 이벤트로 만들 수 있을까?