Öncelikle kaydetmek istediğimiz özellikleri bir sınıf içinde topluyoruz. Bu sınıf USaveGame sınıfından miras almalı.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/SaveGame.h"
#include "MySaveGame.generated.h"
/**
*
*/
UCLASS()
class SYNTH_API UMySaveGame : public USaveGame
{
GENERATED_BODY()
public:
UMySaveGame();
UPROPERTY(EditAnywhere)
FVector player_location ;
};
Ayrıca default constructorımızı da yazdık:
#include "MySaveGame.h"
UMySaveGame::UMySaveGame(){
FVector player_location = FVector(0, 0, 0);
}
Daha sonra istediğimiz yerden LoadGameFromSlot, SaveGameToSlot ile save-load işlemini gerçekleştirebiliyoruz:
void AMyActor::LoadGame() {
UMySaveGame* save_game_instance = Cast<UMySaveGame>(UGameplayStatics::CreateSaveGameObject(UMySaveGame::StaticClass()));
save_game_instance = Cast<UMySaveGame>(UGameplayStatics::LoadGameFromSlot("MySlot", 0));
if (!save_game_instance)
UE_LOG(LogTemp, Warning, TEXT("save game instance cannot be found"));
this->SetActorLocation(save_game_instance->player_location);
}
void AMyActor::SaveGame() {
//UGameplayStatics::DeleteGameInSlot("MySlot", 0);
UMySaveGame* save_game_instance = Cast<UMySaveGame>(UGameplayStatics::CreateSaveGameObject(UMySaveGame::StaticClass()));
if (save_game_instance) {
save_game_instance->player_location = this->GetActorLocation();
UGameplayStatics::SaveGameToSlot(save_game_instance, "MySlot", 0);
UE_LOG(LogTemp, Warning, TEXT("SUCCESS to create save game object"));
}
else {
UE_LOG(LogTemp, Warning, TEXT("Failed to create save game object"));
}
}
Leave a Reply