0. 개요
게임을 종료할 때 플레이어 스타트 태그를 저장하여 게임을 다시 불러올 때 해당 지점에서 다시 시작할 수 있게 한다.
1. 플레이어 스타트 태그 저장
(1) MVVM_LoadSlot과 LoadScreenSaveGame에서 플레이어 스타트 태그 지정
UPROPERTY()
FName PlayerStartTag;
저장된 게임 데이터에서 슬롯으로 플레이어 스타트 태그를 넘겨주어 최종적으로 해당 위치에서 플레이어 캐릭터가 소환되도록 하는 것이 목표이다.
(2) AuraGameModeBase의 슬롯 데이터 저장 함수에서 플레이어 스타트 태그 저장
void AAuraGameModeBase::SaveSlotData(UMVVM_LoadSlot* LoadSlot, int32 SlotIndex)
// 커스텀 저장 게임 오브젝트로 변환하여 데이터 저장
ULoadScreenSaveGame* LoadScreenSaveGame = Cast<ULoadScreenSaveGame>(SaveGameObject);
LoadScreenSaveGame->PlayerName = LoadSlot->GetPlayerName();
LoadScreenSaveGame->MapName = LoadSlot->GetMapName();
LoadScreenSaveGame->SaveSlotStatus = Taken;
LoadScreenSaveGame->PlayerStartTag = LoadSlot->PlayerStartTag;
플레이어 스타트 태그도 저장하도록 설정한다.
(3) 데이터를 불러올 때 플레이어 스타트 불러오기
void UMVVM_LoadScreen::LoadData()
{
AAuraGameModeBase* AuraGameMode = Cast<AAuraGameModeBase>(UGameplayStatics::GetGameMode(this));
for (const TPair<int32, UMVVM_LoadSlot*> LoadSlot : LoadSlots)
{
// 각 슬롯의 키(슬롯 인덱스)-페어(슬롯)를 사용해 세이브 데이터를 가져오기
ULoadScreenSaveGame* SaveObject = AuraGameMode->GetSaveSlotData(LoadSlot.Value->LoadSlotName, LoadSlot.Key);
// 데이터에서 불러오기
const FString PlayerName = SaveObject->PlayerName;
TEnumAsByte<ESaveSlotStatus> SaveSlotStatus = SaveObject->SaveSlotStatus;
LoadSlot.Value->SlotStatus = SaveSlotStatus;
LoadSlot.Value->SetPlayerName(PlayerName);
LoadSlot.Value->SetMapName(SaveObject->MapName);
LoadSlot.Value->PlayerStartTag = SaveObject->PlayerStartTag;
LoadSlot.Value->InitializeSlot();
}
}
저장된 데이터로부터 플레이어 스타트를 가져와 슬롯에 저장한다.
(4) 게임 실행 버튼을 누르면 선택된 슬롯의 태그를 가져와 게임 인스턴스로 전달하기
void UMVVM_LoadScreen::PlayButtonPressed()
{
AAuraGameModeBase* AuraGameMode = Cast<AAuraGameModeBase>(UGameplayStatics::GetGameMode(this));
UAuraGameInstance* AuraGameInstance = Cast<UAuraGameInstance>(AuraGameMode->GetGameInstance());
AuraGameInstance->PlayerStartTag = SelectedSlot->PlayerStartTag;
if (IsValid(SelectedSlot))
AuraGameMode->TravelToMap(SelectedSlot);
}
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
29-5. 저장 - (6) 진행 상황 저장 (0) | 2025.04.07 |
---|---|
29-4. 저장 - (5) 플레이어 스타트를 상속받는 체크 포인트 액터 (0) | 2025.04.07 |
29-2. 저장 - (3) 커스텀 게임 인스턴스 클래스 (0) | 2025.04.07 |
29-1. 플레이어 스타트 선택 (0) | 2025.04.07 |
28-14. 로드 메뉴 UI - (10) 맵 불러오기 (0) | 2025.04.07 |