Input Manager를 대체하는 시스템Input System을 인스톨하여 사용할 수 있음
Action Maps에 입력값을 받을 대상을 지정Actions에 지정한 대상이 실시할 액션을 추가Properties에 액션을 실행시킬 입력값을 할당
Value : 기본값, 컨트롤 상태에 대한 지속적인 변경을 추적해야 하는 모든 입력에 사용Button : 누를 때마다 한 번씩 동작을 트리거하는 입력에 사용Pass Through : 바인딩된 컨트롤을 변경하면 해당 컨트롤 값으로 콜백이 트리거됨, 액션 집합의 모든 입력을 처리하려는 경우 유용

Send Message : 키가 입력되면 해당 오브젝트의 모든 컴포넌트에 메시지 함수를 보냄BroadCast Message : Send Message와 동일하지만 자식 컴포넌트들에게도 메시지가 보내짐Invoke Unity Event : 유니티의 Event System과 동일한 방식으로 객체 내 함수를 해당 입력 이벤트에 바인딩함.Invoke C Sharp Events : Input Actions에서 설정한 키들을 바탕으로 유니티가 C# 코드를 작성해줌. Save Asset시 코드도 자동으로 업데이트됨
Actions Maps를 활성화시킴Actions에 입력된 각각의 키 바인딩에 맞춰 실행할 함수들을 추가해줌Waiting : 키 입력 대기시Started : 키 입력이 시작되어 값은 받았지만 실행이 완료되지 않았을 시performed : 키 입력받고 실행이 완료되었을 때canceled : 키 입력 해제시PlayerInput.SwitchCurrentActionMap(string actionName)함수로 변경
PerformInteractiveRebinding()함수를 사용하여 변경 가능On-Screen Stick 컴포넌트도 설치됨액션의 중복 할당, 오남용 등을 방지하기 위해서 다음과 같은 작업을 해 준다.
Enable, Disable될 때 바인딩 연결 및 해제와 액션의 활성화 여부를 변경한다.private void OnEnable()
{
inputAction_track1.started += CallbackTrack1;
inputAction_track1.Enable();
}
private void OnDisable()
{
inputAction_track1.started -= CallbackTrack1;
inputAction_track1.Disable();
}
private void CallbackTrack1(InputAction.CallbackContext context)
{
if(context.action.phase == InputActionPhase.Started)
{
Attack();
}
}
인풋 시스템의 프로퍼티 설정에서 액션 타입은 Value, Button, Pass Through의 총 세가지 종류가 있다.

인풋 시스템은 이벤트 기반이다.
즉 특정 입력이 들어오면 인풋 시스템이 이에 해당하는 이벤트들을 발생시키는 구조이다.
개발자는 해당 입력 이벤트에 원하는 함수들을 구독시켜놓음으로써 입력을 할당한다.

인풋 시스템에서 할당하는 모든 액션은 인터랙션을 갖고 있다.
인터랙션은 단순하게 게임 내에서 상호작용하는 방식을 뜻한다.
개발자는 여러 종류의 인터랙션을 액션 매핑 도중 추가할 수 있다.

모든 액션은 기본적인 인터랙션을 갖고 있다. 이 인터랙션은 구 입력 시스템의 Press와 유사하다.

Started : 입력값이 들어와 인터랙션이 시작되는 때Performed : 인터랙션이 완료되었을 때(키를 충분히 오래 눌러 Hold인터랙션이 완료되었을 때 등)Canceled : 인터랙션이 취소되었을 때(키를 누르던 중간에 떼어 Hold 인터랙션이 완료되지 않았을 때 등)인터랙션에 대한 시간표는 다음과 같다

개발자는 입력에서 다양한 값들을 받아올 수 있다.

값을 받아올 때 인풋 시스템은 명확화(disambiguation)을 실시한다.
인풋 시스템의 명확화란 어떤 것이 주 조작(main control)인지 결정하는 과정을 뜻한다.
이는 한 번에 하나의 입력을 기대할 때 매우 유용한 과정이다.

명확화는 따른 값 변화에 따른 인터랙션을 확인하면 이해하기 쉽다.
Start인터랙션은 액션에 대한 값이 기본값과 달라지면 실행된다.Peformed인터랙션은 액션에 대한 값이 변화될 때마다 실행된다.Start와 Performed가 동시에 실행되게 된다.Canceled인터랙션은 액션에 대한 값이 다시 기본값으로 돌아갈 때 실행된다.명확화로 인해 Value와 Passthrough의 차이점이 갈린다.
Passthrough는 모든 입력값을 가져오지만, Value는 명확화와 초기 상태 체크를 수행하여 걸러진 입력값을 가져온다.
Value의 초기 상태 체크는 입력 액션 활성화 시에 실시하는 상태 체크를 말한다.
만약 액션이 Enable()로 활성화되었을 때 컨트롤러가 디폴트 값이 아닌 값(버튼이 이미 눌려져 있는 상태)을 갖고 있으면, 인풋 시스템은 이에 해당하는 이벤트를 전송해준다.
반면 Passthrough는 활성화되었을 때의 값이 디폴트 값이 아니더라도 이벤트가 전송되지 않는다.
버튼은 입력 시 값 전달 없이 액션을 트리거시키는 종류이다. 초기 상태 체크 또한 하지 않는다.
인터랙션을 이용해 이벤트의 전송 시점을 변화시킬 수 있다.
예를 들어 Press인터랙션을 추가하여 한계점을 등록하면, 버튼이 눌리기 시작했을 때 Start가 호출되고, 버튼이 한계점 이상으로 눌렸을 때 Performed가 호출된다.
명확화를 하지 않아 주 입력이 없이 모든 입력을 직접적으로 받아온다.
인터랙션에서 설정해주지 않는 한 Start와 Canceled이벤트를 전송하지 않는다.
초기 상태 체크를 하지 않는다.
