[Unity] StateMachineBehaviour 실행 순서

Animator에서 사용하는 Parameter를 조작할 목적으로 StateMachineBehaviour를 써보게 됐다. StateMachineBehaviour는 네 가지 쓸만한 Callback (OnStateEnter, OnStateMove, OnStateUpdate, OnStateExit)을 가지고 있는데 정확히 어느 타이밍에 실행되는지는 매뉴얼에 나오지 않았다. MonoBehaviour와 비슷한 이름을 가진 Callback이지만 실제로는 ScriptableObject를 상속받기 때문에 테스트하지 않고서는 언제 동작할 지 알 수 없었다.

Callback 순서 테스트 결과

  1. MonoBehaviour – Update
  2. State 입장
  3. Animation 첫 프레임 동작
  4. OnStateEnter
  5. OnStateMove
  6. MonoBehaviour – LateUpdate
  7. MonoBehaviour – Update
  8. Animation x 프레임 동작
  9. OnStateUpdate
  10. OnStateMove
  11. MonoBehaviour – LateUpdate
  12. 7~11 반복
  13. MonoBehaviour – Update
  14. OnStateExit
  15. OnStateMove
  16. MonoBehaviour – LateUpdate

StateMachineBehaviour의 모든 콜백은 애니메이션 업데이트가 끝난 뒤에 이루어지고 있었다. 결국 OnStateUpdate로 Parameter를 조작하여 애니메이션에 영향을 주려던 내 계획은 수포로 돌아갔다. 유니티에서 OnStatePreUpdate 같은거 하나 만들어주면 참 좋겠다. 물론 안해주겠지.

Leave a Reply

Your email address will not be published.