프로젝트 일지/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를 실행해줄 것에 의존하는 것보다 외형 로딩 기능을 메서드로 빼는 것이 더 타당해 보였다.