오늘은 Unity의 Input System에 대해 이야기해보고자 합니다.
게임은 다양한 플랫폼에서 플레이할 수 있도록 만들어지는 것이 일반적입니다. 다양한 플랫폼의 게임을 만들 때 입력에 대한 부분이 가장 중요하다고 볼 수 있는데요.
예를 들어, 캐릭터의 이동에 대한 입력을 플랫폼마다 고려해주는 것은 정말 어렵습니다. 키보드와 마우스, 모바일의 터치, 콘솔의 조이스틱 등 입력 방식이 다양하기 때문이죠.
Unity에서 기존에 제공하는 Input.GetKey()를 사용하게 되면 플랫폼을 확장할 때마다 Input과 관련된 스크립트들을 수정해주어야 하는 번거로움이 생깁니다.
이를 해결하기위해 Unity는 2019버전부터 새로운 Input System을 지원하고 있습니다.
적용한 후에 Edit -> Project Settings -> Player 탭의 Other Settings 에서 다음과 같이 되어 Input System이 Both나 Input System Package (New)으로 설정되어 있는지 확인합니다.
Project 탭에서 +버튼을 누르고 Input Actions를 클릭해 새로운 Input Actions를 생성합니다.
생성한 Input Actions를 더블 클릭하면 다음과 같은 창을 확인할 수 있습니다. (사진은 제가 이미 어느 정도 내용들을 추가한 상태입니다.)
Actions Map은 어떤 오브젝트의 행동에 사용할 키를 Map의 이름으로 지정하는 것을 말합니다. 위의 사진은 Player의 행동을 지정하기 위해 Player라는 이름으로 생성했습니다.
이제 Player의 행동인 Actions를 설정할 수 있습니다. Actions는 해당 오브젝트의 어떤 행동에 사용될 키 입력을 받을 것인지에 대한 정보입니다. 저는 위의 사진의 행동들을 추가하였습니다.
Move를 통해 살펴보겠습니다.
다음과 같이 Move에 +버튼을 누르고 "Add Up\Down\Left\Right Composite를 누르면 Up, Down, Left, Right가 자동으로 설정됩니다. 다음 사진처럼 원하는 키를 찾아서 설정해주면 됩니다.
Save Asset을 눌러 저장해주는 것을 잊지 맙시다.
이제 Player 오브젝트에 Player Input 컴포넌트를 추가해줍니다. 추가하면 Actions가 비어있을 텐데 아까 만든 Input Actions를 넣어줍니다. Actions Map을 여러개 만들었다면 Default Map을 바꿔서 설정할 수 있습니다. (Player가 아니라 다른 오브젝트의 행동을 만들었다면...)
이제는 스크립트에 입력값을 전달하는 일만 남았습니다. 하지만 TIL 치고는 글이 너무 길어지는 느낌이라 나머지 내용은 내일 또 포스팅하도록 하겠습니다.