Unity로 이해하는 상태 패턴 (State Pattern)

2023. 8. 9. 13:02·Unity/Design Pattern
반응형

상태 패턴란 ??

상태 패턴은 개체가 클래스를 변경한 것처럼 내부 상태가 변경될 때 개체가 동작을 변경하도록 하는 동작 디자인 패턴입니다.

게임을 위한 적 AI를 만든다고 상상해 보십시오. 적은 순찰, 플레이어 추격, 공격과 같은 여러 상태를 가질 수 있습니다. 이러한 동작은 상당히 다르며 상태 패턴을 사용하지 않으면 코드가 여러 'if' 또는 'switch' 문으로 빠르게 복잡해질 수 있습니다.

상태 패턴이 빛나는 곳입니다. 이를 통해 서로 다른 동작을 별도의 클래스로 캡슐화하고 런타임에 전환할 수 있습니다.

Unity에서 상태 패턴 구현

플레이어를 순찰하거나 추격할 수 있는 간단한 적 AI로 상태 패턴을 설명하겠습니다.

첫째, 적 상태에 대한 추상 기본 클래스가 필요합니다.

csharpCopy code
public abstract class EnemyBaseState
{
    public abstract void EnterState(Enemy enemy);
    public abstract void Update(Enemy enemy);
}

그런 다음 구체적인 상태 클래스를 만듭니다. 다음은 PatrolState의 예입니다.

csharpCopy code
public class PatrolState : EnemyBaseState
{
    public override void EnterState(Enemy enemy)
    {
        // Any setup code for the Patrol state
    }

    public override void Update(Enemy enemy)
    {
        // Code to make the enemy patrol around
    }
}

다음으로 'Enemy' 클래스가 있습니다. 이 클래스에서는 현재 상태를 추적하고 Update 메서드를 현재 상태로 위임합니다.

csharpCopy code
public class Enemy : MonoBehaviour
{
    private EnemyBaseState currentState;

    public void TransitionToState(EnemyBaseState state)
    {
        currentState = state;
        currentState.EnterState(this);
    }

    private void Update()
    {
        currentState.Update(this);
    }
}

상태 사이를 전환하려면 새 상태 인스턴스로 TransitionToState 메서드를 호출하기만 하면 됩니다. 'Enemy' 클래스는 각 상태의 세부 사항을 알 필요가 없습니다. 동작을 현재 상태 개체에 위임할 뿐입니다.

결론

상태 패턴은 특히 복잡한 게임 개체 동작을 관리하기 위한 게임 개발자 도구 상자의 강력한 도구입니다. 코드를 구성하는 깨끗하고 효율적인 방법을 제공하므로 이해, 확장 및 유지 관리가 더 쉬워집니다.

저작자표시 비영리 변경금지 (새창열림)

'Unity > Design Pattern' 카테고리의 다른 글

Unity로 이해하는 빌더 패턴  (0) 2023.09.27
소프트웨어 개발 3대 원칙 : DRY, KISS, YAGNI  (0) 2023.08.10
Unity로 이해하는 옵저버 패턴 (Observer Pattern)  (0) 2023.08.08
Unity로 이해하는 팩토리 패턴 (Factory Pattern)  (0) 2023.08.07
Unity로 이해하는 어댑터 패턴 (Adapter Pattern)  (1) 2023.08.06
'Unity/Design Pattern' 카테고리의 다른 글
  • Unity로 이해하는 빌더 패턴
  • 소프트웨어 개발 3대 원칙 : DRY, KISS, YAGNI
  • Unity로 이해하는 옵저버 패턴 (Observer Pattern)
  • Unity로 이해하는 팩토리 패턴 (Factory Pattern)
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (727) N
      • 스마트팜 (1) N
      • 상품 추천 (223)
      • DataBase (0)
        • MongoDB (4)
        • PostgreSQL (0)
      • 하드웨어 (18)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    카페24리뷰이관
    라떼우유
    list
    codingcommunity
    리뷰이관
    리스트
    programmerlife
    파이썬
    긴유통기한우유
    unity
    상품 리뷰 크롤링
    Python
    C#
    codingtips
    learntocode
    appdevelopment
    ipcamera
    유니티
    programming101
    카페24리뷰
    devlife
    리뷰관리
    cv2
    셀레니움
    스크립트 실행
    믈레코비타멸균우유
    rtsp
    스크립트 실행 순서
    스마트스토어리뷰
    쇼핑몰리뷰
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
Unity로 이해하는 상태 패턴 (State Pattern)
상단으로

티스토리툴바