본문 바로가기
Unity

Input Manager와 Input System Package에 대하여...

by 민트코코넛 2020. 12. 23.
728x90
반응형

1. < Input Manager >

Unity에서 기본적으로 사용하는 입력 키 및 세팅 설정창.

인풋매니저에서 설정한 값은 실제 코드 및 프로그램에서 외부 입력에 대한 동작을 구현할 때 사용된다.

 

다만, 단점이 있다면, 처음 해보는 mapping setting이라면, 각 키 또는 축이 어떤식으로 작동되는지, 그리고 어떤 axis 또는 type으로 동작하는지 직접 일일이 찾아내어야 한다는 점이다.

 

단점이 있다면, 장점도 있기 마련이다.

장점은, 사용하는 유저가 각 키애 대한 매핑값을 알고 있다면, 수월하게 작성할 수 있고, 한 번 세팅된 값을 복사하여, 다른 프로젝트에서도 중복하여 사용할 방법이 있다는 점이다.

 

복사하고 싶은 프로젝트 내부에서, 인풋매니저 에셋을 원하는 폴더에 옮겨서 적용해주면 된다.

 

 

 

 

 

인풋매니저 옵션 ▶ Name : Axis 이름, Input.GetAxis(" ")에서 작성할 이름.

Descriptive Name : Positive Button에 대한 자세한 정의 기술.

Descriptive Negative Name : Negative Button에 대한 자세한 정의.

Negative Button : ( - ) 반대 방향 기능을 할 버튼 설정  / Alt Negative Button : 또 다른 반대 방향 버튼.

Positive Button : ( + ) 정 방향 기능을 할 버튼 설정  / Alt Positive Button : 또 다른 정 방향 버튼.

Gravity : 입력값이 다시 중심이 되는 속도 설정, Type이 Key 또는 mouse인 경우에만 적용되는 옵션

Dead : 해당 수치 미만의 양수 또는 음수 값을 0으로 전환하는 것. Joystick에서 사용하며, 미세한 값을 사용해야 하는 경우에는 설정하지 않는다.

Sensitivity : 키보드를 사용 시, 해당 옵션의 값이 크면, 반응속도가 빨라지고, 값이 낮으면, 부드러운 움직임을 보인다.

마우스 입력 시, 실제 마우스 델타값이 입력된다.

Snap : 반대 방향의 입력을 받는 즉시, axis 값이 0으로 재설정되는 옵션. Type이 Key 또는 Mouse 인 경우에만 사용.

Invert : 기존의 값에 -1 값을 곱셈할 것인지 확인하는 옵션. 옵션을 체크하면, 기존의 반대방향으로 입력값이 계산되어 출력된다.

Type : Mouse 형태, Keyboard 형태, Joystick 형태.

Axis : X, Y, 3rd ~ 28th axis : 조이스틱 기준, 각 스틱 또는 버튼에 배당되는 Mapping axis.

Joy Num : 2인 이상, 멀티플레이어를 지원하는 경우 사용하는 것으로, 같은 조이스틱에 1P, 2P 등을 배정해서 각기 다른 것으로 인식되도록 하는 것.

 

+ VR, XR 장비의 경우, Plugin을 통해서 설치를 하면, 자동적으로 해당 키 매핑이 인풋매니저에 입력되므로, 일일히 해야 하는 부담감이 줄어든다.

 

2. < Input System Package >

2019.1. version 부터 지원되는 preview pacakage로, 기존의 Input Manager를 대체하는 System Package이다.

 

기존의 인풋매니저와 가장 큰 차이점은, 인풋매니저의 경우 각 키 매핑을 직접 입력해야 한다는 단점을, 인풋시스템을 활용하여 외부 입력 키를 [listen]을 통해서 곧장 알아낼 수 있으며, 해당 외부 입력 기기의 매핑정보를 Input Debbuger를 통해서 손쉽게 알아낼 수 있다는 점이다.

 

또한, 인풋시스템에서는 시스템 상, 연결 가능한 모든 기기의 입력 타입과 키 매핑을 미리 확인해 볼 수 있어서, 장비를 적용할 때, 어떤 키를 어떠한 기능에 연결시키면 좋을지 선택할 때 도움을 줄 수 있다.

 

다만, 단점이 있다면, 인풋매니저의 경우, 각 키를 매핑하고 난 후, 해당하는 axis를 Input.Get____을 사용하면 금방 적용할 수 있었지만, 인풋 시스템의 경우에는, 키 매핑은 간단하지만, ReadValue를 통해서 입력된 조이스틱과 버튼의 값을 받아와서 사용하기 때문에, CallbackDelegate에 대한 이해도가 부족하다면, 즉시 적용하기엔 어려움이 생길 수 있다.

 

하지만, 인풋매니저에 비하여, 인풋시스템만의 편리함은 CallBack과 Delegate, Virtual Class 등 심층적인 공부에 대한 의욕을 불러일으키기에 충분하다고 생각한다.

 

3. < Input 활성화 선택하기 >

Player Setting -> Other Setting 

Input Manager(Old)와 Input System(New) 중에서 사용할 시스템을 선택하거나, 상황에 따라서 양쪽을 모두 사용해야 하는 경우, 옵션으로 방식을 선택할 수 있다.

 

 

 

4. Input System의 확장성과 활용성.

 인풋매니저만 사용하던 당시에는, 확실하게 연결이 가능한 기기 이외의, 입력 여부가 확실하게 확인이 안되는 기기에 대한 연결과 사용을 전혀 고려하지 않았다고 한다면, 인풋시스템에서는 이러한 불확실한 외부 기기에 대한 연결 방법을 찾을 수 있기 때문에, Unity에서 원하는, 단 하나의 지역, 단 한명의 유저를 위해서, 모든 것을 구현한다는 그들의 목적에 알맞게 설정된 시스템이라고 생각한다.

 

나 또한, 이 부분에 대하여 추가적으로 공부하여, 인풋매니저만 알던 당시에는 전혀 고려하지 않았던 외부 입력 기기의 연결을 인풋시스템을 활용하여 시도해 볼 것이고, 이는 스스로의 실력 상승에 도움이 될 것이라고 확신한다.