유니티 Animation의 State를 관리할 수 있는 스크립트 #StateMachineBehaviour

StateMachineBehaviour란?

State 개념과 / StateMachineBehaviour 추가하는 방법

StateMachineBehaviour는 특정 State에 진입하자마자, 혹은 빠져나가기 직전 등 각 State의 상황에 따라 어떠한 코드를 자동으로 실행할 수 있도록 도와주는 스크립트입니다. 

 

StateMachineBehaviour는 State 입·출력, 업데이트 이벤트 등 다양한 콜백을 제공합니다. OnStateEnter, OnStateUpdate, OnStateExit 등은 물론, Transition시점에 호출되는 이벤트도 다룹니다.

더보기

🔽Animator란?

Unity의 Animator는 State단위로 움직임을 정의합니다.  “(Transition) Condition”과 “Animation Clip”을 활용하여 각 State를 서로 연결합니다.

 


StateMachineBehaviour 사용방법 

using UnityEngine;

public class MyStateBehaviour : StateMachineBehaviour
{
    // 예: 데미지량, 이펙트 이름 등
    [SerializeField] private string debugMessage = "State Running...";

    // 상태에 진입할 때 1회 호출
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        Debug.Log($"[{stateInfo.shortNameHash}] 상태 진입 - {debugMessage}");
    }

    // 상태가 유지되는 동안 매 프레임 호출
    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        Debug.Log($"[{stateInfo.shortNameHash}] 업데이트 중...");
    }

    // 상태에서 빠져나갈 때 1회 호출
    override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        Debug.Log($"[{stateInfo.shortNameHash}] 상태 종료");
    }
}

상황 예