본문 바로가기
Unity

Player Input 컴포넌트를 꼭 써야할까?

by Oz Driver 2025. 7. 13.

Unity의 Input System은 기존의 Input Manager를 대체하기 위해 도입된 Unity의 새로운 입력 시스템입니다.

그리고 대부분의 입문자는 아마 이렇게 시작할 것입니다.

Player Input 컴포넌트를 추가하고, Input Action Asset을 연결하는 방식

왜냐하면 Unity의 공식 문서나 각종 튜토리얼 영상들이 Player Input 컴포넌트” 를 기본 사용법처럼 소개하기 때문입니다. 하지만 실제로는… Player Input 컴포넌트를 붙이지 않아도 Input System을 사용할 수 있습니다.

 

Player Input 컴포넌트는 필수가 아닙니다.

먼저, Player Input 컴포넌트를 추가하는 과정을 간단히 살펴보겠습니다.

•   Add Component > Player Input 컴포넌트를 선택합니다. 

 

•   Actions 항에 유니티가 기본으로 제공하는 InputSystem_Actions 를 연결합니다.  

 

•   각 입력 동작에 맞게 Action Map을 구성합니다

 

그런데 Player Input Component 는 Input System 을 편리하게 쓰기위한 편의용 껍데기입니다.

편의성을 위해 모든 기능이 들어있다보니, 그만큼 구조가 복잡해서 이것을 한번에 파악하기에는 다소 부담스럽습니다.

 

InputAction 을 직접 추가하는 방식

Player Input 컴포넌트 없이 InputAction 을 직접 코드에서 선언하는 방식은 훨씬 직관적이고 간단합니다.

public class Movement : MonoBehaviour
{
    [SerializeField]
    InputAction trustAction;
   
    void OnEnable()
    {        
        trustAction.performed += OnTrustPerformed;
        trustAction.Enable();
    }
   
    void OnDisable()
    {        
        trustAction.performed -= OnTrustPerformed;
        trustAction.Disable();
    }

    void OnTrustPerformed(InputAction.CallbackContext context)
    {
        if (context.performed)
        {           
            Debug.Log("Trust action performed");
        }
    }
}

 

•    Trust 는 유니티 Inspector 창에서 + 버튼을 통해 원하는 입력을 매핑시킵니다.

 

•    그러면, 메뉴가 등장하는데 여기서부터는 Player Input Component 를 통해 추가하는 것과 유사합니다.

 

•    키보드 스페이스 바와 대응하도록 추가하였습니다. 

 

이런 식으로 moveAction, jumpAction, interactAction 등 필요한 액션을 하나씩 추가해서 Enable, 이벤트 등록, Disable 까지 직접 처리할 수 있습니다.

그런데 이렇게 하나하나 붙이다 보면 어느 순간 다음과 같은 생각이 들게 됩니다.

“이걸 하나하나 다 직접 관리하려니, 이제 매니저가 필요하겠는데?”

그리고 그때 다시 처음으로 돌아가, “이럴 거면 Player Input 쓰는 게 더 낫지 않나...?” 라는 고민이 생기기도 합니다.

 

어떤 방식을 선택해야 하나?

Input System은 두 가지 방식으로 사용할 수 있습니다

InputAction 직접 사용

•   가볍고 단순하게 시작 가능

•   프로젝트가 복잡해질수록 직접 제어할 수 있어 유연성과 확장성이 높음

•   단, 모든 로직을 수동으로 관리해야 하므로 구조 설계가 중요함

 

Player Input 컴포넌트 사용

•   초기 설정이 복잡하지만 익숙해지면 빠르게 구현 가능

•   하지만 구조가 고정돼 있어 복잡한 프로젝트에선 확장성이 떨어질 수 있음

 

마무리

처음에는 Player Input 컴포넌트를 추가하는 것이 당연하다고 생각했습니다. 

그런데 InputAction 을 직접 제어하는 방식을 경험해보니, 무엇보다 간단하게 시작할 수 있고, 더 유연하고 자유로운 방식이라는 것을 알게 되었습니다. 

물론 어느 쪽이 정답이라는 건 없기 때문에, 입력 구조를 어떻게 구성하고 싶은지에 따라 Player Input 또는 InputAction 직접 제어 중에서 선택하시면 됩니다.