작성
·
299
·
수정됨
0
안녕하세요, 강사님 세이브 파일을 구현하는 내용 중 여쭈어 볼 것이 있어 질문을 드립니다.
void AABPlayerController::BeginPlay()
{
Super::BeginPlay();
FInputModeGameOnly GameOnlyInputMode;
SetInputMode(GameOnlyInputMode);
SaveGameInstance = Cast<UABSaveGame>(UGameplayStatics::LoadGameFromSlot(TEXT("Player0"),0));
if (SaveGameInstance)
{
SaveGameInstance->RetryCount++;
}
else
{
SaveGameInstance = NewObject<UABSaveGame>();
SaveGameInstance->RetryCount = 0;
}
K2_OnGameRetryCount(SaveGameInstance->RetryCount);
}
플레이어 컨트롤러의 BeginPlay 함수 부분인데요, 제가 이해한 바로는 Player0라는 세이브 파일을 불러드려서, 해당 세이브 파일이 존재한다면 세이브 파일에 기록된 RetryCount를 증가시키고 K2_OnGameRetryCount 가 실행된다 라고 이해했습니다. 그렇다면 세이브 파일이 이미 있다고 가정할 때, 게임을 처음 시작하자마자 RetryCount가 하나 증가한 상태로 HUD의 RetryCount가 업데이트 되어 보여져야 하는 것 아닌가 생각했습니다. 물론 실질적인 저장은 GameOver를 통해서 하기 때문에 게임을 단순히 켰다 끄면 증가한 RetryCount 값이 저장은 되지 않겠지만, 적어도 게임은 킨 시점에서는 세이브 파일을 통해 불러온 RetryCount 에 하나 상승한 값이 HUD에 보여져야 한다고 생각하는데 어째서 RetryCount가 증가하여 보여지지 않는지 궁금합니다.
답변 1
1
네 마지막 강의라 제가 들떴나보네요 ㅎㅎ
다음 코드가 깔끔할 것 같습니다.
SaveGameInstance = Cast<UABSaveGame>(UGameplayStatics::LoadGameFromSlot(TEXT("Player0"), 0));
if (!SaveGameInstance)
{
SaveGameInstance = NewObject<UABSaveGame>();
SaveGameInstance->RetryCount = 0;
}
SaveGameInstance->RetryCount++;
빠른 답변 정말 감사드립니다!