키 대신 게임 속 행동부터 정하기

새 Input System에서는 키보드의 특정 키를 바로 읽기보다 이동, 점프, 상호작용처럼 게임 안에서 의미가 있는 행동을 먼저 정합니다. 행동 하나에 키보드, 게임패드, 터치를 각각 연결해 두면 플랫폼을 늘릴 때 입력 코드를 다시 짤 일이 줄어듭니다.

Unity는 액션 기반 작업 방식을 권장합니다. 콜백이나 멀티플레이어 연결이 필요하면 PlayerInput을 함께 쓸 수 있습니다. 이 글은 1인용 프로토타입에서 시작해 나중에 확장하기 쉬운 구성을 다룹니다.

처음 연결할 것

처음에는 Action Asset 하나와 PlayerInput 하나만 연결하세요. 씬에 입력 처리 오브젝트가 여러 개 있으면 같은 액션이 중복으로 호출될 수 있습니다.

  1. Package Manager에서 Input System 패키지를 설치하고, 필요하면 Project Settings의 Active Input Handling을 확인합니다.
  2. Input Actions 에셋에 Gameplay 맵을 만들고 Move(Vector2), Jump(Button)처럼 행동 중심의 액션을 추가합니다.
  3. 플레이어 오브젝트에 PlayerInput을 하나 추가하고 방금 만든 액션 에셋을 연결합니다.
  4. 코드에서는 액션을 구독하기 전에 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 중심으로 잡아 두는 게 관리하기 쉽습니다.