Chapter 6. Factory Pattern

개발하는 운동인·2024년 11월 8일
post-thumbnail

Factory Pattern 생성 전 준비 과정

    1. 제품들을 만든다.




  • 각 제품들의 색상이 다르다.


Factory Pattern 생성 방법

    1. IUnitProduct 스크립트 생성 후, 클래스가 아닌 Interface로 변경한다.
  • 이 인터페이스를 상속받게 되는 제품이 있을 것인데, 해당 제품은 제품의 이름과 제품이 생산되었을 때 처음 해야 할일(초기화)에 대한 것들을 상속받는 클래스가 작성해야 한다.

    1. UnitFactory 스크립트 생성 후 , 추상 클래스로 변경한다.
  • IUnitProduct의 반환타입을 갖는 추상 메서드를 작성한다. 매개변수는 Vector3 타입이며, 이 변수를 통해서 제품 생성 위치를 받아온다.

    1. BabarianA 스크립트 생성 후 , IUnitProduct 인터페이스를 상속받게 하고, 구현해야 될 것들을 작성한다. (UnitName 프로퍼티, Init 메서드)
  • unitName 은 Red Barbarian으로 짓고, Init 메서드가 실행 될 때 해당 제품의 이름을 unitName으로 변경하고, 해당 제품의 회전값을 설정한다.

    1. BabarianA 프리펩에 BarbarianA 스크립트 추가 후, 음악 리소스를 할당한다.
    1. FactoryBarbarianA 스크립트 생성 후, UnitFactory 추상 클래스로부터 상속받게 한다.
  • UnitFactory 추상 클래스로부터 상속을 받으니, 구현해야 될 메서드를 작성한다. 구현해야 될 메서드는 제품을 생성하는 메서드 였었다.

  • 따라서, Instantiate() 이용하여 제품을 생성하고, 해당 제품의 ProductBarbarianA 스크립트(컴포넌트)을 접근하여 Init () 호출한다.

  • 마지막으로, 이 추상 메서드의 반환타입이 IUnitProduct 이므로, return newProduct;을 한다. newProduct 는 현재 IUnitProduct로부터 상속받고 있다.

    1. 기존 Barbarian 생성하는 것을 SpawnManager가 관리했었다. SpawnManager의 자식으로 FactorialBarbarianA라는 빈 객체를 만든다.

  • FactorialBarbarianA 스크립트를 추가한다.

❗ 하지만, 아직 SpawnManager는 BabarianD만 생성할 줄 만 안다. 즉, 여러 제품을 관리하는 것이 이 디자인 패턴의 목적이므로 UnitFactory 클래스 배열을 통해 제품들을 관리하도록 한다.

    1. 위 내용을 수정한다. 기존 SpawnManager의 SpawnBarbarian 메서드를 다음과 같이 수정한다.
  • UnitFactory 클래스 배열 객체를 선언하고, 배열 객체의 0번째 인덱스를 UnitFactory 클래스의 객체로 저장한다.

  • 저장한 객체를 통해 GetProudct(hitpoint)을 호출한다. hitpoint는 현재, GetTerrainHitPoint()을 통해 얻은 터레인의 위치 값이다.

    1. SpawnManager의 인스펙터창에서 BarbarianA를 할당하도록 한다.
  • 실행 시, 정상적으로 작동한다.
  • 빨간색 BabarianA가 정상적으로 생성된 것을 확인할 수 있다.

나중에, FactoryBarbarianB FactoryBarbarianC FactoryBarbarianD 스크립트를 생성해서 위와 같이 진행하고 SpawnManager의 인스펙터창에서 제품들을 할당하면 관리하기 편해진다.

0개의 댓글