내일배움캠프

내일배움캠프: InputSystem Rebinding (인풋시스템을 활용한 키 리바인딩)

pracumj 2024. 10. 25. 22:23

오늘 공부한 내용📝

오늘은 Unity Input System에서 리바인딩을 적용하는 방법에 대해 학습했다. 인풋시스템 내부 메서드를 활용한다면  쉽게 리바인딩이 가능하다는 것을 깨달았다.

인풋 시스템 리바인딩

리바인딩 단계

  1. 바인딩 키 등록:
    • InputAction 객체를 생성하고, 각 Action에 필요한 초기 키 바인딩을 설정한다.
      (Input Action을 생성해 그 안에다 정의하거나 스크립트를 통해 정의)
  2. 리바인딩 설정:
    • [ InputAction  객체명].PerformInteractiveRebinding() 메서드를 사용해 특정 Action에 대해 리바인딩을 시작한다.
    • WithControlsExcluding("<Mouse>")와 같은 설정으로 특정 장치를 제외할 수도 있다.
  3. 리바인딩 비활성화 및 재작업:
    • InputAction.Disable()을 통해 리바인딩 중 Action을 비활성화하여 의도치 않은 입력을 방지
    • 리바인딩이 완료되면 InputAction.Enable()을 통해 다시 활성화하여 새로운 입력 설정을 반영

코드 예시

 //InputAction을 받아 해당 첫번째 바인딩 값을 리바인딩
public void Rebind(InputAction action)
{
	action.Disable();
	action.PerformInteractiveRebinding()
    .WithControlsExcluding("<Mouse>") // Mouse의 경우에는 키 값을 받지 않음 ex)마우스 사용이 없는 게임
    .OnComplete(callback => action.Enable());
}

 

 

마무리😺

인풋시스템을 활용한 리바인딩이 익숙하지 않아 유니티 docs를 보면서 처음 코드를 작성할 때는 여러움을 겪었지만 몇번 시행착오를 거치고 나니 그리 어렵지 않다는 것을 알았다. 기존 키값을 저장해두고 바인딩 값 초기화 로직을 만든다던지 키 값을 여러개 바인딩 해주는 로직을 추가 한다던지 등 인풋시스템을 다양하게 활용할 수 있을 것 같다.