Unity/기능

[Unity] New Input System 사용하기3

turbulence93 2025. 7. 18. 20:30

1. 세팅하기

  • 이번에는 Input System을 스크립트로 추출하여 사용해 보는 방법을 공부해봤다.
  • Input Actions를 열고 Generate C# Class 를 체크해준다.
  • 그리고 Apply 버튼을 눌러 주면 스크립트를 생성해 준다.

스크립트 생성


2. 사용방법

  • 클래스 이름으로 생성자를 통해 저장해서 사용한다.
  private PlayerInputActions input;

    private void Awake()
    {
        input = new PlayerInputs();
    }
  • 그 이후에는 C# Events에서 사용했던것과 마찬가지로 할당해 주면 된다.
  private void OnEnable()
    {
        input.Player.Move.performed += OnMove;
        input.Player.Enable();
    }

    private void OnDisable()
    {
        input.Player.Move.performed -= OnMove;
        input.Player.Disable();
    }

    private void OnMove(InputAction.CallbackContext ctx)
    {
        Vector2 dir = ctx.ReadValue<Vector2>();
        Debug.Log(dir);
    }

3. 왜 사용할까?

  • 스크립트로 생성만 되었을 뿐 사용 방법자체는 C# Events 처리와 같은 방식이다.
  • 그렇다면 스크립트로 생성해서 사용하는 이유가 뭘까?
  • 기존 C#  Events에서 action에 접근하기 위해서는 actions name을 정확하게 입력했어야 헀다.
playerInput.actions["Jump"].started += OnJump; //"Jump"를 정확하게 입력해야 함
  • 하지만 코드로 추출하게 되면 action들을 자동으로 연결해준다.
  • 뿐만 아니라 action map도 만들어주기 때문에 접근성이 굉장히 용이해진다.

만들어진 action들이 연결 된 모습

  • 위 예제 코드를 예시로 들면
input.Player.Move.performed += OnMove;
  • Player : Action Map Name
  • Move : Acton Map 내부 Actions가 된다.
  • 그래서 액션맵.사용할액션.동작 으로 처리하면 간결하게 처리가 가능하다.
  • 심지어 직접 타이핑하여야 되는 string도 아니기 때문에 오타에 의한 위험성도 줄어들게 된다.

4. 마무리

같은 기능을 만들었다면 접근성과 안정성이 높은편을 선택하는것이 좋지 않을까 한다.

세팅이 변거롭지도 않기 때문에 접근성 역시 괜찮은편이니 New Input System을 스크립트 제어할 계획이라면,

스크립트로 추출하여 사용하는 것을 권장한다.

'Unity > 기능' 카테고리의 다른 글

[Unity] Find 함수  (2) 2025.08.07
[Unity] CPU 와 GPU  (1) 2025.08.05
[Unity] 람다의 캡처와 클로저 개념  (2) 2025.07.17
[Unity] New Input System 사용하기2  (0) 2025.07.16
[Unity] New Input System 사용하기  (0) 2025.07.15