키 대신 게임 속 행동부터 정하기
새 Input System에서는 키보드의 특정 키를 바로 읽기보다 이동, 점프, 상호작용처럼 게임 안에서 의미가 있는 행동을 먼저 정합니다. 행동 하나에 키보드, 게임패드, 터치를 각각 연결해 두면 플랫폼을 늘릴 때 입력 코드를 다시 짤 일이 줄어듭니다.
Unity는 액션 기반 작업 방식을 권장합니다. 콜백이나 멀티플레이어 연결이 필요하면 PlayerInput을 함께 쓸 수 있습니다. 이 글은 1인용 프로토타입에서 시작해 나중에 확장하기 쉬운 구성을 다룹니다.
처음 연결할 것
처음에는 Action Asset 하나와 PlayerInput 하나만 연결하세요. 씬에 입력 처리 오브젝트가 여러 개 있으면 같은 액션이 중복으로 호출될 수 있습니다.
- Package Manager에서 Input System 패키지를 설치하고, 필요하면 Project Settings의 Active Input Handling을 확인합니다.
- Input Actions 에셋에 Gameplay 맵을 만들고 Move(Vector2), Jump(Button)처럼 행동 중심의 액션을 추가합니다.
- 플레이어 오브젝트에 PlayerInput을 하나 추가하고 방금 만든 액션 에셋을 연결합니다.
- 코드에서는 액션을 구독하기 전에 Enable/Disable의 짝이 맞는지 확인합니다.
using UnityEngine;
using UnityEngine.InputSystem;
public class MoveProbe : MonoBehaviour
{
[SerializeField] private InputActionReference move;
private void OnEnable() => move.action.Enable();
private void OnDisable() => move.action.Disable();
private void Update()
{
Vector2 direction = move.action.ReadValue<Vector2>();
Debug.Log(direction);
}
}
입력이 안 들어올 때 볼 네 곳
초기 설정 문제는 코드 문법보다 연결 상태에서 더 자주 생깁니다. 액션이 꺼져 있는지, 지금 쓸 Action Map이 활성화됐는지, Game 뷰에 포커스가 있는지, 같은 PlayerInput이 둘 이상 있는지 차례대로 보세요.
프로토타입은 장치 상태를 직접 읽어도 괜찮습니다. 다만 키 재설정이나 여러 장치를 지원할 게임이라면 처음부터 Action 중심으로 잡아 두는 게 관리하기 쉽습니다.
확인한 공식 문서Unity Input System 1.20 매뉴얼 ↗