반응형

하드디스크에 정보를 저장하기


Remarks

This class acts as a base class for a save game object that can be used to save state about the game. When you create your own save game subclass, you would add member variables for the information that you want to save. Then when you want to save a game, create an instance of this object using CreateSaveGameObject, fill in the data, and use SaveGameToSlot, providing a slot name. To load the game you then just use LoadGameFromSlot, and read the data from the resulting object.



https://docs.unrealengine.com/latest/KOR/Gameplay/SaveGame/index.html

게임 저장하기

  • SHARE:

언리얼 엔진

게임 저장 및 로드 구성을 위한 가장 간단한 방법은 SaveGame 오브젝트를 사용하는 것입니다.

BlankSaveGame.png

SaveGame 오브젝트를 여러가지 부속으로 된 박스로 생각해 보세요. 각 부분마다 변수를 만들어 일정량의 정보를 저장하도록 설정할 수 있습니다. 예를 들어 플레이어의 점수는 물론 이름도 저장하는 변수를 만들 수 있습니다. Character, PlayerController, GameMode 와 같은 다른 클래스에서 SaveGame 오브젝트로 정보를 전달할 수 있습니다. 그러기 위해서는 먼저 SaveGame 오브젝트의 인스턴스를 생성하거나 복사해야 합니다.

SaveGameVariables.png

그런 다음 예를 들어 PlayerController 에서 플레이어의 점수와 이름에 대한 값을 받은 다음 SaveGame 오브젝트 내 일치하는 변수에 저장하면 됩니다.

StoreVariables.png

SaveGame 오브젝트는 이제 이 변수 값을 하드 디스크에 저장할 때까지 유지합니다.

StoredVariables.png

마지막으로 SaveGameToSlot 을 사용해서 SaveGame 오브젝트를 하드 디스크 상의 파일에 저장하면 됩니다. 다른 프로그램에서 새 게임 또는 문서를 저장하는 것과 똑같은 방식으로 이루어지는데, SaveGameToSlot 에 파일명을 지어주기 때문입니다. 기본적으로 세이브 게임은 Saved\SaveGames 폴더에 .sav 파일로 저장됩니다. SaveGameToSlot 에 사용자 ID 도 주어야 나중에 로드할 정보를 찾아보는 데 도움이 됩니다.

SaveGame 오브젝트에서 정보를 로드하는 것 역시 단순한 프로세스인데, 정보 저장의 거의 반대입니다. LoadGameFromSlot 함수를 사용하여 입력에서 파일명과 사용자 ID 를 받습니다. LoadGameFromSlot 으로 하드 디스크에서의 정보를 로드하면 SaveGame 오브젝트의 새로운 사본이 생성됩니다.

StoredVariables.png

이 오브젝트를 사용하면 게임내 다른 오브젝트와 액터에 있는 정보를 복사할 수 있습니다. 이 예제에서는 플레이어가 저장된 게임을 열어 플레이를 재시작할 때와 마찬가지로 플레이어의 점수와 이름을 PlayerController 속으로 로드시킵니다.

LoadingVariables.png





블루프린트로 게임 저장하기

https://docs.unrealengine.com/latest/KOR/Gameplay/SaveGame/Blueprints/index.html

  • SHARE:
언리얼 엔진

SaveGame 오브젝트 생성

SaveGame 오브젝트를 새로 생성하기 위해서는, 블루프린트 클래스를 새로 생성 합니다. 부모 클래스 선택 대화창이 뜨면, Custom Class드롭다운을 펼친 다음 SaveGame 을 선택합니다. 검색창에서 SaveGame 에 바로 점프할 수 있습니다. 새 블루프린트 이름은 MySaveGame 이라 합니다.

savegame.png

새로 만든 SaveGame 오브젝트 블루프린트에서, 저장하고자 하는 정보를 담을 변수를 생성합니다.

이 예제에서는, SaveSlotName 과 UserIndex 에 대한 기본값 저장에 사용될 변수도 선언되어 있어, 이 SaveGame 오브젝트에 저장하는 각 클래스에서는 그 변수를 따로 설정할 필요가 없습니다. 이 단계는 옵션으로, 기본값이 변경되지 않은 경우 하나의 세이브 슬롯을 덮어쓰게 됩니다.

SaveGameVariables.png

블루프린트 컴파일 이후 변수에 대한 기본값을 설정할 수 있습니다.

변수 저장하기

전체 저장 구성 스냅샷입니다. 이미지를 클릭하면 원래 크기로 볼 수 있습니다.

먼저 Create Save Game Object 노드를 사용하여 SaveGame 오브젝트의 인스턴스를 생성 또는 복사합니다. Save Game Class 드롭다운 이름을 새로운 SaveGame 오브젝트 블루프린트 이름으로 설정했는지 확인합니다. 이 경우 MySaveGame 입니다. Create Save Game Object 노드가 범용 SaveGame 오브젝트 사본을 만들기 때문에, Return Value 핀을 드래그한 다음 Cast to MySaveGame 를 놓아야 합니다. 나중에 SaveGame 오브젝트를 쉽게 재사용하려면 변수로 승격 을 통해 변수에 대한 형변환 결과를 저장하세요.

SaveGameBP_1.png

이제 커스텀 SaveGame 오브젝트인 MySaveGmae 사본을 Save Game Instance 변수에 저장했으니, 이제 거기에 정보를 전송할 수 있습니다. 여기서 Player Name 은 PlayerOne 으로 설정되어 있습니다. 정보를 저장하고자 하는 변수가 더 있는 경우, 이 단계를 반복해 주면 됩니다.

SaveGameBP_2.png

이제 Save Game To Slot 노드를 사용하여 SaveGame 오브젝트의 정보를 하드 디스크에 저장하면 됩니다. Save Game To Slot 노드는 파일명과 사용자 ID 를 받는데, 여기서는 앞서 만들어둔 기본값이 됩니다.

SaveGameBP_3.png

변수 로드하기

전체 저장 셋업에 대한 스냅샷입니다. 이미지를 클릭하면 확대해 볼 수 있습니다.

첫 단계는 옵션으로, SaveGame 오브젝트 안에 기본 세이브 슬롯과 사용자 ID 를 저장하는 것을 기반으로 합니다. 여기서는 빈 SaveGame 오브젝트를 먼저 생성하여, 거기서 기본 SaveSlotName 과 UserIndex 를 읽을 수 있도록 합니다. 마찬가지로 이 부분은 모든 게임 구현에 적용되는 것은 아닙니다.

LoadGameBP_1.png

Load Game From Slot 노드를 사용하여 SaveGame 오브젝트 블루프린트의 인스턴스를 생성할 수 있습니다. 정보 저장을 위해 SaveGame 오브젝트를 생성했을 때와 마찬가지로, 특정 SaveGame 오브젝트 블루프린트로 형변환시켜 줘야 그 결과를 변수에 저장하여 나중에 쉽게 접근할 수 있습니다.

LoadGameBP_2.png

하드 디스크에서 새로운 SaveGame 오브젝트를 로드한 이후에는 변수값을 읽어 필요한 액터 또는 클래스에 할당하거나 여기서처럼 직접 사용할 수도 있습니다.

LoadGameBP_3.png

반응형

+ Recent posts