Deff_Dev

[Unity/C#] FSM 본문

Unity(유니티)

[Unity/C#] FSM

Deff_a 2024. 6. 18. 20:22

FSM

유한 상태 기계 (Finite State Machine, FSM)

  • 유한한 갯수의 상태들로 구성된 기계 및 패턴을 만한다.
  • 상태와 상태 간의 전환을 기반으로 동작하는 동작 기반 시스템

구성 요소

  • 상태 (State) : 시스템이 취할 수 있는 다양한 상태
  • 전환 조건 (Transition Condition) : 상태 간 전환을 결정하는 조건
  • 동작 (Action) : 상태에 따라 수행되는 동작 또는 로직

동작 원리

  • 초기 상태에서 시작하여 입력 또는 조건에 따라 상태 전환을 수행
  • 상태 전환은 전환 조건을 충족할 때 발생하며, 전환 조건은 입력, 시간, 조건 등으로 결정
  • 상태 전환 시 이전 상태의 종료 동작과 새로운 상태의 진입 동작을 수행

예시 : 플레이어 상태

  • 상태 : 정지 상태, 이동 상태, 점프 상태
  • 전환 조건 : 이동 입력, 점프 입력, 충돌 등의 조건
  • 동작 : 이동, 애니메이션 등의 실제 동작

 

어떻게 구현해야할까 ?

 

Switch-Case 문을 활용한 FSM의 단점

  • 상태가 많아지고 조건이 복잡해진다면 코드가 길어짐
  • 유지보수가 어려움
  • 상태가 추가될 때마다 새로운 분기를 작성해야되고 중복된 코드가 많아짐

상태 패턴을 이용하여 FSM를 구현할 때 장점

  • 기본적으로 객체지향의 다형성을 활용
  • 상태를 명확하게 정의하고 상태 간 전환을 일관되게 관리
  • 복잡한 동작을 상태와 전환 조건으로 나누어 구현하므로 코드 유지 보수가 용이
  • 다양한 동작을 유기적으로 조합하여 원하는 동작을 구현
  •