코드 리팩토링을 하기전에는

24b0d121e09c28a8699fe8b115ef046ec948c3f3



이런 식으로
전략 패턴으로 상속 받으면서 적의 이동이나 공격을 처리했었음.

근데 이번에 ECS로 구조를 바꾸면서,
전략 패턴을 움직임의 세부적인 로직만 따로 "EnemyMovementAISystem"이라는 별도의 시스템으로 분리해서 관리하도록 바꿨음.


코드를 요약하자면

"EnemyMovementAIComponentBase.cs":

    - 모든 적 움직임 AI의 베이스가 되는 추상 클래스.

    - 공통적으로 필요한 MoveDuration 같은 프로퍼티가 들어있음.

"EnemyMovementAISystem.cs":

    - 적마다 이동 로직을 분류해서 처리함.


"EnemyData.cs":

    - 적 데이터를 ScriptableObject로 관리.

    - EnemyMovementAIComponentBase 변수를 만들고, 에디터 코드로 아래 사진처럼 클래스 타입과 생성자 값을 인스펙터에서 간편하게 설정 가능하도록 했음.

24b0d121e09c28a8699fe8b115ef046c68f32c46


이런 식으로 인스펙터에서 간편하게 설정할 수 있음.


EnemyMovementWaitAIComponent로 예시 (MoveDuration동안 움직이고, WaitDuration동안 기다림)


7fed8273a8826beb3fec96e4439c71658018f4d0eccc642cef0c52083548bcf79491fc07


아직 애니메이션을 적용하지 않아서 어색하긴 한데 기능은 아주 잘 동작함.

Attack도 마찬가지로 적용할 예정

근데 애니메이션은 또 어떻게 적용할지 막막..