MADE WITH UNITY | 스테이트 패턴
unity 유니티 공부 2025. 11. 21. 18:57 |
https://www.youtube.com/watch?v=uFKd7JbI5QY&list=PL412Ym60h6uvqYiCVKk5NiEFpDEwOMQFX&index=7

대표적인 예시가 유니티 의 Animator 창
+
스테이트 패턴 의미
블럭 교체 방식
신호등 같은 것
오브젝트의 내부 상태가 바뀜에 따라 행동을 바꾸게 만드는 패턴
객체(Context)는 행동을 직접 처리하지 않고,
현재 자신이 맡고 있는 "역할 배우(State Object)"에게 모든 실행 책임을 위임합니다
+
예시
스탠스 바꾸기 가능
스탠스 는 딱 1개만 유지
2개 이상의 스탠스 보유 금지
얼굴 표정
Happy, Angry, Scared
모션 동작
Attacking, Blocking, UsingItem, Reloading
+
흔한 실수
Update ( ) 에서
if , else if , else if ... 이렇게 하면
코드를 읽기 힘들고, 수정 시 버그가 발생하기 쉽다
그래서 해결법이 스테이트 패턴임
각 상태(Idle, Run, Jump)를 별도의 클래스로 분리하는 것임
+
if (currentState != null)
currentState.Exit();
// 하나의 상태만을 위해서
// 이전 상태를 종료시킨다
+
상태이상으로 쓰면 안됨
독 이면서 마비 이면서 감속 상태이상. 이렇게 공존 가능하기 때문임
+
스테이트 패턴으로 코딩 짤 때는
새 클래스 (새로운 스크립트) 를 제작헤애 힌디
클래스 수가 많아지기 때문에 복잡해질 수 있다

상태 State
지금 현재 부품
전환 Transition
현재 부품이 다른 부품으로 갈아치워짐
이벤트 Event
일, 사건, 상태 전환을 일으키는 외부 입력
동작 Action
그 상태에선 모션을 실행 할거냐 이펙트를 재생할 거냐

i interface 를 사용
점프전 스쿼트 ,시작
점프 공중 체공 , 중간
점프 착지, 끝
이렇게 시작 중간 끝 세개로 나눔
+

실 구현 예시
if 플레이어가 땅에 붙어있음이 아닐 경우
점프 상태다
if 플레이어 속도가 0.1f 이상이다
움직이니까 걷는 상태다
