[Unity] Input Action 에서 간헐적으로 'started' 콜백이 MissingReferenceException 되는 문제

박민주·2022년 1월 26일
0

Unity

목록 보기
16/40
post-thumbnail

[Unity] Input Action에서 IsPressed()와 started 이벤트 사용하기
위에서 이야기했던 것처럼
요즘에는 Input Action 쓰고 있는데 매번 그런 것도 아니고 간헐적으로 아래와 같은 에러가 난다

https://forum.unity.com/threads/reference-exceptions-missingreferenceexception-while-executing-started-callbacks.1078058/

위 링크에서 나온대로
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() 방식으로 다시 돌아갈 생각은 아직 없다..!

profile
Game Programmer

0개의 댓글