Ö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"));
	}
}


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *