1. DataAsset 중심 구조

여러 개의 건물 DataAsset을 배열로 관리하였다.

TArray<TObjectPtr<UKOBuildingDataAsset>> BuildOptions;

그리고 입력으로 들어온 인덱스에 따라 해당 DataAsset을 선택한다.

BuildOptions[0] = DA_House;
BuildOptions[1] = DA_Wall;
BuildOptions[2] = DA_Tower;

키 입력이나 UI 버튼에서는 인덱스만 넘겨주고, 실제 건설 시작은 기존 함수를 그대로 사용한다.

StartBuildModeWithData(BuildOptions[BuildIndex]);

선택된 DataAsset만 바뀌고, 고스트 생성과 설치 로직은 그대로 재사용된다.


2. BaseBuilding 구조

나중에 설치 비용, 체력, 생산량, 공격력 같은 값이 추가되면 스폰된 건물도 자기 DataAsset을 알고 있어야 하기 때문에

공통 부모 건물 클래스를 만들었다.

UPROPERTY(VisibleInstanceOnly, BlueprintReadOnly, Category = "Building")
TObjectPtr<UKOBuildingDataAsset> BuildingData;

건물을 스폰한 뒤에는 선택된 DataAsset을 건물에 넘겨준다.

NewBuilding->InitializeBuildingData(CurrentBuildingData);

정리

  • 기존에는 DefaultBuildingData 하나로 단일 건물만 테스트했다.
  • 여러 건물을 지원하기 위해 BuildOptions 배열 구조를 사용했다.
  • 건물 정보는 DataAsset 중심으로 관리한다.
  • 스폰된 건물은 자기 DataAsset을 참조할 수 있어야 한다.
  • BuildComponent는 건설 과정만 담당하고, 건물 기능은 건물 클래스나 Component로 분리한다.
  • 입력 방식은 이벤트 그래프에서 IMC 기반 구조로 옮길 예정이다.