[Unity] Input System(1)
Unity InputSystem
유니티에는 Input을 받는 방법이 두 가지가 있다
| 구 Input Manager | 새 Input System | |
|---|---|---|
| 접근 방식 | 폴링 (매 프레임 체크) | 이벤트 기반 (콜백) |
| 파일 | Project Settings에서 설정 | .inputactions 에셋 파일 |
| 멀티 디바이스 | 제한적 | 네이티브 지원 |
| 로컬 멀티플레이어 | 구현 복잡 | PlayerInputManager로 간편 지원 |
과거에는 Input.GetKey() 같은 방식으로 매 프레임 입력을 확인하는 폴링(Polling) 방식이 주로 사용되었다.
하지만 게임이 복잡해지고 키보드, 마우스뿐 아니라 게임패드, 모바일 컨트롤러 등 다양한 입력 장치를 지원해야 하는 상황이 많아지면서 Unity는 새로운 Input System을 제공하게 되었다.
Input System 용어 정리
Input Action Asset
- 확장자가 .inputactions인 JSON 형식의 에셋 파일
- 액션 맵, 액션, 바인딩, 컨트롤 스키마 등 모든 입력 구성 정보를 포함
- Unity 6에서는 Input System이 표준 입력 방식

유니티 씬에 InputSystem_Action를 Input Action Asset 이라고 한다
Input Action Map
- 관련된 액션들을 그룹화하는 컨테이너
- 특정 게임 상황별로 구분(예: Player, UI, Vehicle, Menu)
- Action Map은 액션들의 집합이다.
점프라는 키가 눌렸는지 판단하는게 아니고 점프라는 액션 값을 읽어와서 점프라는 것을 인식하는 느낌
즉 특정 키 입력 자체보다 플레이어의 의도(Action)를 기준으로 입력을 처리한다.
Input Action
- 게임 내 논리적 동작을 나타내는 추상화된 입력 (=디바이스의 물리적 입력을 1대1로 매칭하는게 아님)
- 여러 물리적 입력 장치를 하나의 동작으로 매핑
- 액션 타입: Value, Button, Pass Through
- long 클릭, 더블 클릭과 같은 세부적인 기능이 있다
Binding
- 액션과 실제 컨트롤을 연결하는 매핑 정보
- 하나의 액션에 여러 바인딩 추가 가능 (멀티 플랫폼 지원)
- Composite Binding으로 여러 컨트롤 조합 가능 (예: WASD -> 2D Vector)
터치 스크린, 핸드폰에 끼우는 패드도 디바이스고 액션과 연결할 수 있다
Control
- 입력 장치의 개별 물리적 입력 요소 (버튼, 스틱, 키, 트리거 등)
- Control Path로 식별: /space, /leftStick
- 계층적 구조: 제네릭에서 특정장치로 세분화 ( 에서 )
- 현재 입력 값과 상태 정보를 실시간으로 제공
사실상 컨트롤과 액션들이 서로 연결되는 느낌
Interaction
- 입력이 언제 트리거될지 결정하는 패턴 정의
- 기본 제공 타입: Press, Hold, Tap, SlowTap, MultiTap 등
- 액션의 라이프 사이클 결정: started, performed, canceled
- 바인딩별로 다른 인터렉션 설정 가능
Control Scheme
- 특정 입력 장치 조합을 하나의 스키마로 정의(예: Keyboard&Mouse, Gamepad)
- 스키마별로 활성화할 바인딩 그룹 지정
- 자동 전환: 마지막 입력, 연결된 장치, 기본 설정 기준으로 자동 선택
- 멀티플레이어 지원: 플레이어별로 다른 스키마 할당 가능


![[Unity] PC 세이브 데이터 Android로 옮기기](https://data.develog.develrocket.com/upload/develog/muchan/1792206352286-hd4xz4/_____2026-10-17_114953.png)
![[Unity] 제네릭 박싱 예방](https://data.develog.develrocket.com/upload/develog/gmumdev/1792123312021-bhxx2i/_____.png)