C++와 Unreal Engine으로 3D 게임 개발 팀프로젝트
GM에서 타입 설정 > 해당 타입에 따라 SM에서 스테이지 Room 열기

BeginPlay에서 실행시켰더니 순서가 보장안됨
그래서 GM의 시작함수 안에서 SM의 시작 함수를 호출하도록 함.

시작은 하나 여전히 타입을 읽지 못함
void ASanzoStageManager::BeginPlay()
{
Super::BeginPlay();
if(AGameModeBase* GM=GetWorld()->GetAuthGameMode())
{
SGM=Cast<ASanzoGameMode>(GM);
if(SGM)
{
StageType=SGM->CurrentStageType;
}
}
}
void ASanzoStageManager::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void ASanzoStageManager::StartStage()
{
UE_LOG(LogTemp, Warning, TEXT("SM: 스테이지 시작"));
TSubclassOf<ASanzoRoomBase> RoomClassToSpawn = nullptr;
switch (StageType)
{
case ESanzoStageType::None:
UE_LOG(LogTemp, Warning, TEXT("전투 타입: 없음"));
return;
case ESanzoStageType::Extermination:
UE_LOG(LogTemp, Warning, TEXT("전투 타입: 섬멸전"));
RoomClassToSpawn = ExterminationRoomClass;
break;
case ESanzoStageType::Survival:
UE_LOG(LogTemp, Warning, TEXT("전투 타입: 버티기"));
RoomClassToSpawn = SurvivalRoomClass;
break;
case ESanzoStageType::Boss:
UE_LOG(LogTemp, Warning, TEXT("전투 타입: 보스"));
RoomClassToSpawn = BossRoomClass;
break;
}
if (!RoomClassToSpawn) return;
CurrentRoom = GetWorld()->SpawnActor<ASanzoRoomBase>(RoomClassToSpawn, FVector::ZeroVector, FRotator::ZeroRotator);
if (CurrentRoom)
{
CurrentRoom->OnRoomCleared.AddUObject(
this,
&ASanzoStageManager::OnRoomCleared
);
CurrentRoom->BeginRoomSequence();
}
}
여전히 beginplay에서 타입을 저장을 먼저 하고 있었음!!!!!
StartStage에서 타입 가져오는 걸로 변경.

StageGate 구현

https://dlaiml.tistory.com/entry/UE5-Delegate%EB%8D%B8%EB%A6%AC%EA%B2%8C%EC%9D%B4%ED%8A%B8
[UE5] Delegate(델리게이트)
최근 팀원과 프로젝트를 진행하던 중, 기능과 UI가 추가되면서 점점 주요 기능을 담당하는 클래스가 다른 클래스의 참조를 요구하는 경우가 늘어나고 다른 클래스의 로직 또한 전부 주요 클래스
dlaiml.tistory.com
'내배캠Unreal_TIL > 팀프로젝트' 카테고리의 다른 글
| [TIL] 2026-02-20 | 레벨 최적화 (2) | 2026.02.20 |
|---|---|
| [TIL] 2026-02-12 | 협업하기 (0) | 2026.02.12 |
| [TIL] 2026-02-10 | 클래스의 책임 분리 (4) | 2026.02.10 |
| [TIL] 2026-02-09 | [슈터 게임 프로젝트] Init (0) | 2026.02.09 |
| [TIL] 2026-01-07 | [텍스트 콘솔 RPG] '에레보스타워' 프로젝트 회고 (0) | 2026.01.07 |