UE4 Chapter 6-5. UI : 저장, 불러오기(SaveGame)

Date:     Updated:

카테고리:

태그:

인프런에 있는 황대희님의 언리얼 엔진4 3D 횡스크롤 게임 만들기 강의를 듣고 정리한 필기입니다. 😀
언리얼 엔진 공식 문서 https://docs.unrealengine.com/ko/index.html

🔔 SaveGame 블루프린트

언리얼 엔진에서는 게임의 데이터를 로컬 환경에 저장하고 불러들이는 기능을 SaveGame 클래스로 제공한다.

  • 이 블루프린트 안에서 작성하는 변수들의 상태는 로컬 환경에도 그대로 보존이 된다.
  • 게임 데이터를 저장하면 📂Saved/SaveGames 폴더에 게임 데이터가 저장된다.

image

부모 클래스를 Save Game으로 하여 “SideSrollSaveGameBP” 이름의 블루프린트를 생성한다.

🚩 “SideSrollSaveGameBP” SaveGame 블루프린트 이벤트 그래프

게임을 종료하고 나중에 다시 켜도, 내가 어디까지 클리어 했는지를 보존하여 이를 바탕으로 클리어 한 스테이지들을 불러올 수 있어야 한다. 따라서 이를 로컬 환경(📂Saved/SaveGames)에서도 보존하고 저장할 Integer 타입의 ClearStage 변수를 추가한다. 로컬에도 저장되는 이 변수값을 사용하여 게임을 저장하고 불러오는 작업은 게임 인스턴스 블루프린트인 "SideSrollGameInstance" 에서 해볼 것이다.


🔔 저장(Save)

먼저 “SideSrollSaveGameBP” SaveGame 블루프린트 를 참조할, “SideSrollSaveGameBP” 오브젝트 레퍼런스 타입의 SideScrollSaveGameRef라는 변수를 추가한다.

저장하는 함수 작성

🚩 “SideScrollGameInstance” 게임 인스턴스 블루프린트

image

“SideSrollSaveGameBP”의 ClearStage 변수값은 로컬 환경에도 저장이 된다. 따라서 저장을 한다는 것은 이 “SideSrollSaveGameBP”의 ClearStage 변수값을 세팅한다는 의미가 된다.

  • 로컬 환경에 저장하는 기능을 하는 Save 함수를 직접 만들었다.
    • SideScrollSaveGameRef가 유효 하면, 즉 “SideScrollGameInstance” 인스턴스가 이미 존재하면
      • “SideScrollGameInstance” 인스턴스 생성하는 과정을 스킵하고 바로 ClearStage 세팅 과정으로 넘어간다.
    • SideScrollSaveGameRef가 유효하지 않으면 “SideScrollGameInstance” 인스턴스가 아직 없다는 것이기에 생성해주고 이를 SideScrollSaveGameRef에 저장해주어야 한다.
      • Create Save Game Object 👉 “SideSrollSaveGameBP” 힐딩
      • SideScrollSaveGameRef에 이를 할당
    • “SideSrollSaveGameBP”의 ClearStage에 “SideScrollGameInstance”의 ClearStage 값을 세팅한다.
      • 즉 “SideScrollGameInstance”의 ClearStage값을 SaveGame 블루프린트에 넘겨 로컬로 저장하여 기억하는 것이다.
    • Save Game Slot 👉 로컬 파일로 저장한다.
      • SideScrollSaveGameRef 을 넘기면 “SideSrollSaveGameBP” 블루프린트의 모든 변수 및 설정 값들이 “SideScroll”이름의 파일로 저장된다.


저장 실행

🚩 “DefaultPlayGameMode” 게임 모드 블루프린트 이벤트 그래프

image

보스를 죽이고 Stage Clear 처리 하는 부분 맨 끝에 “SideScrollGameInstance”의 Save 함수를 호출한다.


🔔 불러오기(Load)

불러오기 함수 작성

🚩 “SideScrollGameInstance” 게임 인스턴스 블루프린트

image

  • 로컬 환경에 불러오는 기능을 하는 Load 함수를 직접 만들었다.
    • Local Game Slot 👉 로컬 파일을 불러온다.
      • “SideScroll” 이름의 파일을 불러오되 이를 SaveGame 클랙스 타입으로 불러온다.
        • 따라서 “SideSrollSaveGameBP” 로 형변환 해주는게 필요하다.
    • SideScrollSaveGameRef에 로딩한 “SideSrollSaveGameBP” 인스턴스를 할당한다.
    • 로컬에 저장했었던 “SideSrollSaveGameBP”의 Clear Stage 값을 “SideScrollGameInstance”의 Clear Stage에 복사한다.


불러오기 실행

🚩 MainMenu 레벨 블루프린트

image

게임을 시작하면 제일 먼저 마주하는 것이 메인 메뉴 레벨이므로 메인 메뉴 블루프린트에서 호출하자. 메인 메뉴 위젯을 불러오는 작업 끝에 Load 함수를 호출한다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

UE4 Lesson 1 카테고리 내 다른 글 보러가기

댓글 남기기