반응형

Unreal에서는 엔진에서 제공해주는 'SaveGame API'가 있다.


SaveGame을 소스에서 사용하는 방법에 대해 설명하겠다.


Unreal Editor에서 클래스를 생성할 때, SaveGame을 상속받아 생성한다.



생성한 클래스가 데이터를 저장할 ''이다.


생성된 클래스의 헤더파일로 이동하여 저장하려는 Type의 변수를 Public에 선언하면 게임을 저장할 준비가 끝난다.


저장될 때에는 Binary형태로 저장하기 때문에 정해진 Type 없이 자유롭게 생성하면 된다.


중요한 점은 UPROPERTY를 사용해 블루프린트로 사용 가능하도록 설정하는 것이다.


정확한 원인은 파악하지 못했지만, UPROPERTY를 사용하지 않으면 데이터가 저장되지 않는다.


위와 같이 구조체를 포함한 다양한 형식으로 데이터를 선언할 수 있다.


FString SaveSlotName;

int32 SaveIndex;


단, 위의 두 변수는 SaveGame을 이용하여 저장할 때 필요한 변수이므로 꼭 넣어두도록 하자.


이제 정의한 클래스를 이용하여 데이터를 Save & Load 할 수 있다.


현재 프로젝트의 GameModeBase 파일을 열어보자.


헤더 파일에 생성한 클래스와 GameplayStatics.h를 선언한 뒤, Save & Load 함수를 정의하고 cpp 파일로 넘어간다.


#include "MySaveGame.h"

#include "Kismet/GameplayStatics.h"


Save하는 방법은 아래와 같다.



생성한 클래스를 CreateSaveGameObject를 이용하여 Cast한 뒤 변수에 저장할 값을 넣어주면 된다.


SaveSlotName과 SaveIndex는 Load할 때에도 같은 값으로 사용하니 다른 데이터와는 구분하는 것이 좋다.


그리고 GameplayStatics에서 제공해주는 SaveGameToSlot을 이용하여 sav 파일을 생성하면 저장이 완료된다.


불러오는 방법은 sav 파일을 LoadGameFromSlot으로 불러오는 것을 제외하고는 마찬가지로 사용하면 된다.


Save 함수를 실행 한 뒤, Load 함수를 실행하면 Log에 저장한 데이터가 불러와 지는 것을 확인 할 수 있다.



반응형

'게임 개발 끄적 > Unreal (C++)' 카테고리의 다른 글

[UE4] File Copy & Explorer  (0) 2018.03.19
[UE4] Send HTTP  (3) 2018.03.19
[UE4] Time Manager  (0) 2017.11.24
[UE4] 소스코드에서 이미지 로드  (2) 2017.11.24
[UE4] ScreenShot  (0) 2017.11.24

+ Recent posts