인프런 커뮤니티 질문&답변

영매님님의 프로필 이미지
영매님

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

15강 게임의 완성

RetryCount 세이브 관련 질문

작성

·

292

·

수정됨

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++;
영매님님의 프로필 이미지
영매님
질문자

빠른 답변 정말 감사드립니다!

영매님님의 프로필 이미지
영매님

작성한 질문수

질문하기