```cs
// Unity C# Script
public virtual void Enter()
{
// 진입
}
public virtual void HandleInput()
{
// 입력받았을 때
// 조건 체크
}
public virtual void LogicUpdate()
{
// 로직 상 업데이트
// 보통 Update에서 사용
}
public virtual void PhysicsUpdate()
{
// 피직스 업데이트
// 보통 Fixed Update에서 사용 (기기 성능에 구애받지 않음)
}
public virtual void Exit()
{
// 빠져나갈 때
}
// 시작할 때 가져야 할 상태를 받음
public void Initialize(State startingState)
{
CurrentState = startingState; // 받은 상태로 시작
startingState.Enter(); // 시작 상태의 엔터 호출
}
public void ChangeState(State newState) // 새로운 상태를 받음
{
CurrentState.Exit(); // 기존 상태에서 빠져나옴
CurrentState = newState; // 새로운 상태로 초기화
newState.Enter(); // 새로운 상태의 엔터 호출
}