프로젝트 일지/Unity

[Unity/TIL] 최종 프로젝트 개발 일지 - 중복되는 코드 구조 변경

톰마토 2025. 4. 25. 21:02

TowerControlBase - TakeRoot 메서드 구조 변경 

ProjectileTowerController, AreaTowerController, RangeTowerController의 부모가 되는 TowerControlBase 클래스에서 TakeRoot 메서드를 abstract로 만들었었다. TowerController 종류마다 할 일이 다를 것 같아서 그렇게 했는데, 정보 세팅 부분은 같고 외형 로딩만 달라서 TakeRoot 메서드를 분리했다.

TakeBody 메서드를 추가해서 TakeBody만 abstract로 만들었다. 

    /// <summary>
    /// Tower 정보 넣어주는 함수
    /// </summary>
    /// <param name="Info">Tower 데이터</param>
    public void TakeRoot(int primaryKey, string name, Vector2 position)
    {
        // 정보 세팅
        Tower = new Tower();
        Tower.Init(primaryKey, Preview);
        Tower.Sprite = Preview;
        TowerStatus = Tower.TowerStatus;

        Init();

        // 외형 세팅
        TakeBody();
    }

    /// <summary>
    /// 외형 로딩
    /// </summary>
    protected abstract void TakeBody();

 

TakeRoot를 abstract에서 virtual로 바꾸고 base에서 정보세팅이 이루어지게 할까 했는데, base.TakeRoot를 실행해줄 것에 의존하는 것보다 외형 로딩 기능을 메서드로 빼는 것이 더 타당해 보였다.