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}] 상태 종료");
}
}