최고 점수 표시 목표
최고 점수를 화면에 표시하고 데이터를 파일로 저장하기
구현 순서
- 최고 점수 UI 제작
- 점수 갱신 기능 구현
- 점수 저장용 블루프린트 생성
- 점수 저장 및 로드 기능 구현
1. 최고 점수 UI 제작하기
- WBP_MainWidget BluePrint 실행
- BestScoreText, BestScoreData 생성
- 적합한 X, Y 배치
- 적합한 크기 배치
- 컴파일, save
2.최고 점수 갱신하기
GameModeBase - AddScore
- Add Score 함수의 Current Score가 갱신될때마다 Best Score와 크기 비교
- Current Score가 크다면 BestScore에 Current Score값 갱신해주기
- 종료
BestScoreData의 Content에 Binding
Binding 로직
- BP_GameModeBase 호출
- Best Score값 가져오기
- 해당 값 Text로 Casting 하기
- Text 값에 바인딩BestScoreData의 Content에 Binding
3 ~ 4. 점수를 파일로 저장하고 불러오기
최고 점수가 갱신되지만 하드디스크 파일 저장이 아닌 휘발성 메모리에 저장하다보니
플레이를 다시 할 때마다 최고 점수가 초기화되어버립니다.
언리얼 엔진은 간단한 데이터의 경우 굳이 C++ 사용하지 않고서도 블루프린트만으로 데이터를 파일에 저장하고 읽어오는 노드를 제공하고 있습니다.
Save GameObject
SaveScore에 저장할 ScoreData 변수 생성
BP_GameModeBase에 SaveScoreData 함수 생성
- Create Save Game Object 노드 생성(실제 데이터를 저장할 클래스 파일 선택)
- Promote to variable 노드 생성 ⇒ 항목을 선택해서 변수 형태로 전환
- Save Instance 노드를 Set Score Data노드에 연결, Save Instance 출력 값을 Target에 연결합니다.
- Save Value값을 Score Data 값에 저장합니다.
- SaveGame to Slot 노드 생성 ⇒ 여러 가지 세이브 파일을 슬롯 형태로 구분해서 저장.
- 슬롯에 이름을 정해줍니다.
- BestScoreData
BP_GameModeBase에 LoadScoreData 함수 생성
- Does Save Game Exist 함수 노드를 생성해서 슬롯에 BestScoreData가 저장되어 있는지 확인합니다.
- Branch 노드를 통해 True인 경우에만 다음 조건을 실행합니다.
- Load Game From slot 노드를 생성해서 저장된 슬롯으로부터 데이터를 가져옵니다.
- 아까 지정한 BestScoreData 슬롯 이름으로부터 가져옵니다.
- Cast To BP_SaveScore 노드를 생성합니다.
- 슬롯으로부터 읽어온 데이터를 BP_SaveScore 클래스로 변환합니다.
- Score Data를 Get으로 가져옵니다. 이를 반환 노드에 전달합니다.
Add Score 함수에 마지막 로직 추가
Add Score 함수의 마지막에 Save Score Data 노드를 통해 Score Data 노드의 Save Value에 Best Score 갱신 값을 전달해줍니다.
GameModeBase EventGraph
마지막 부분에 Load Score Data 노드를 통해 Best Score 값을 가져옵니다.
최고 점수가 슬롯 형태로 저장됩니다.
Slot 데이터가 저장되는 곳
Saved/SaveGames 폴더 아래에 .sav 포맷으로 저장됩니다.
참고
인생 언리얼 프로젝트 1권을 실습하고 작성한 글입니다.
'Unreal' 카테고리의 다른 글
UE - 3인칭 TPS 프로젝트 생성하기 (0) | 2024.10.12 |
---|---|
UE - 실행 파일로 패키징 (0) | 2024.10.05 |
UE - 프로젝트 알파 타입 - UI 제작하기 (1) | 2024.09.21 |
UE - 프로젝트 알파 타입 - 외부 모델링 교체 (0) | 2024.09.14 |
UE - 프로젝트 프로토 타입 - 슈팅 프로젝트(배경 스크롤) (0) | 2024.09.07 |