- 개요
데이터 로드 맵의 HUD에서 데이터 슬롯을 클릭하고 이름을 입력받아 슬롯에 적용하도록 설정한다
- C++ 사이드
1) LoadScreenSaveGame 클래스

게임 데이터를 저장하는 컨테이너 역할을 수행하는 SaveGame 클래스를 위와 같이 생성한다
멤버변수는 다음과 같이 구성하였다
- SlotName 멤버변수 : 데이터 슬롯의 이름
- SlotIndex 멤버변수 : 데이터 슬롯의 인덱스
- PlayerName 멤버변수 : 데이터 슬롯에 저장할 플레이어의 이름
2) AuraGameModeBase 클래스

슬롯에 데이터를 저장하기 위한 SaveSlotData 함수를 추가한다
또, 게임의 데이터를 저장하기 위한 SaveGame에 대한 Subclass를 멤버변수로 추가한다

SaveSlotData 함수의 로직은 위와 같다
- DoesSaveGameExist 함수를 호출하여 특정한 이름의 세이브 파일이 존재하는지 확인
- 존재한다면 DeleteGameInSlot 함수를 호출하여 세이브 파일을 디스크에서 삭제
- CreateSaveGameObject 함수를 호출하여 멤버변수로부터 SaveGame의 인스턴스를 생성
- 생성한 인스턴스를 LoadScreenSaveGame 클래스로 캐스팅하고 PlayerName을 설정
- SaveGameToSlot 함수를 호출하여 게임 데이터를 실제 파일(.sav)로 기록
3) MVVM_LoadSlot 클래스

데이터 슬롯을 클릭했다면 변경하기 위한 SetWidgetSwitcherIndex 델리게이트를 추가한다
해당 델리게이트는 C++과 블루프린트 모두에서 사용할 수 있으며 1 : 多의 관계로 브로드캐스트한다
마지막으로 변경하기 위한 데이터 슬롯의 인덱스를 인자로 전달한다

SetWidgetSwitcherIndex 델리게이트를 멤버변수로 추가하고,
InitializeSlot 함수를 새롭게 추가한다

InitializeSlot 함수의 로직은 임의로 SetWidgetSwitcherIndex 멤버변수를 브로드캐스트한다
4) MVVM_LoadScreen 클래스

위와 같이 3개의 함수를 새롭게 추가한다

NewSlotButtonPressed 함수의 로직은 위와 같다
- GameMode를 가져와 AuraGameModeBase로 캐스팅
- 선택한 데이터 슬롯의 PlayerName 설정
- 캐스팅한 GameMode로부터 SaveSlotData 함수를 호출하여 해당하는 슬롯의 이름으로 데이터 파일 저장
- 선택한 데이터 슬롯으로부터 InitializeSlot 함수 호출

NewGameButtonPressed 함수의 로직은 위와 같이 임시로 구성하였다
SelectSlotButtonPressed 함수의 경우 정의만하고 로직은 구성하지 않았다
- 블루프린트 사이드
1) WBP_LoadSlot_Vacant 위젯 블루프린트


BlueprintInitializeWidget 이벤트를 위와 같이 구성한다
버튼의 OnClicked 이벤트를 설정하여 클릭한 슬롯으로부터 NewGameButtonPressed 함수를 호출한다
2) WBP_LoadSlot_EnterName 위젯 블루프린트


BlueprintInitializeWidget 이벤트를 위와 같이 구성한다
버튼의 OnClicked 이벤트를 위와 같이 설정하여 입력창에 입력한 값을
NewSlotButtonPressed 함수에 넘겨주어 입력한 값으로 세이브 파일을 생성한다
3) WBP_LoadSlot_WidgetSwitcher 위젯 블루프린트

선택할 수 있는 슬롯 -> 플레이어 이름을 입력하는 슬롯 -> 저장된 데이터를 보여주는 슬롯 순서로
전환하기 위한 위젯으로 사용한다
3 - 1) InitializeSlot 함수

InitializeSlot 함수의 로직은 위와 같다
선택한 슬롯의 인덱스에 해당하는 3개의 슬롯 UI들을 설정하고 BlueprintInitializeWidget 함수를 호출한다
3 - 2) BlueprintInitializeWidget 이벤트

BlueprintInitializeWidget 이벤트의 로직은 위와 같다
사용중인 슬롯의 ViewModel의 SetWidgetSwitcherIndex 델리게이트에
해당 슬롯의 인덱스에 해당하는 UI를 활성화하는 이벤트를 바인드한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 저장 시스템 - 5) 저장된 데이터 슬롯 삭제 (0) | 2025.12.27 |
|---|---|
| 저장 시스템 - 4) 데이터 저장과 불러오기 (0) | 2025.12.26 |
| 저장 시스템 - 2) 데이터 저장을 위한 준비 (0) | 2025.12.20 |
| 저장 시스템 - 1) 데이터 저장 방식 설정과 MVVM 플러그인 도입 (0) | 2025.12.18 |
| 화염 폭풍 스킬 - 최종) 화염구의 폭발 피해 추가 + 로컬에서의 GC 실행 (0) | 2025.12.13 |