[Unity] Input Action에서 IsPressed()와 started 이벤트 사용하기
위에서 이야기했던 것처럼
요즘에는 Input Action 쓰고 있는데 매번 그런 것도 아니고 간헐적으로 아래와 같은 에러가 난다
위 링크에서 나온대로
OnEnable()에서 콜백 등록하고 InputAction.Enable() 해주고
OnDisable()에서 콜백 제거하고 InputAction.Disable() 해주었다
그리고 해결됨!
콜백 등록 방법은 Ace Combat Zero: 유니티로 구현하기 #1 : Input 에서 참고했다!!
private void OnEnable()
{
inputAction_track1.started += CallbackTrack1;
inputAction_track1.Enable();
}
private void CallbackTrack1(InputAction.CallbackContext context)
{
if(context.action.phase == InputActionPhase.Started)
{
Attack();
}
}
private void OnDisable()
{
inputAction_track1.started -= CallbackTrack1;
inputAction_track1.Disable();
}
콜백함수를 하나 더 만들어야 하고 OnEnable과 OnDisable에서 처리해주어야할 게 늘었지만,,
그래도 콜백을 쓰는 게 Input 관리에는 직관적이라고 생각되서
예전에 쓰던 Input.GetKey() 방식으로 다시 돌아갈 생각은 아직 없다..!