[UE4 지뢰찾기] 클리어 시간 저장하고 불러오기
클리어하는 경우 시간 정보를 저장하고 불러와 화면에 노출하는 UI를 만들어본다.
먼저 SaveGame 클래스를 상속받아 FindMineSaveGame 클래스를 만든다.
이 클래스에는 저장할 정보들을 변수로 입력한다.
HighSpeedClearTime 은 가장 빠른 클리어 시간을 저장하며 ClearTimes는 역대 클리어한 시간을 모두 저장한다.
FindMineGameGameModeBase를 생성할 때 세이브파일이 있는지 체크하고 없는 경우 새로 만들어준다.
그 다음 최고 속도 클리어 타임과 역대 클리어 시간들을 저장한다.
게임을 실행하고 게임모드 베이스의 디테일 창을 보면 정상적으로 저장된 값을 볼 수 있다.
최고점을 체크하는 함수인 CheckFastestRecordUpdate() 함수에서 기록을 갱신했다면 저장 정보를 변경하고 역대 클리어 시간들에 저장한다. 그 다음 정보를 저장한다.
이렇게 세이브파일 생성과 저장 기능을 추가하였다.
이제 역대 클리어 타임들을 볼 수 있는 UI를 만든다.
이전에 만들었던 기본 UI에서 클리어 시간 버튼을 누르면 새로운 UI를 추가하도록 하였다.
또한 UI를 오픈할 때 뒷부분 게임영역이 클릭이 되면 안되므로 현재 게임 상태를 변경한다 (OpenUserClearTimesUI 함수)
이 때 BP_ClearTimesWidget라는 블루프린트 위젯을 생성하는데 ListView를 이용하여 스크롤을 만들었다.
배경은 Blur를 이용하여 뿌옇게 만들었으며 GameModeBase에 저장되어 있는 ClearTimes를 이용하여 데이터를 파싱한다.
이때 ListView에 등록되는 하나의 인자는 새로운 블루프린트 위젯으로 BP_ClearTime이라고 새로 만들었다. 여기엔 시간 정보만 나타내도록 하였다.
ListView의 인자로 사용되기 위해서는 반드시 UserListObjectEntry 인터페이스를 추가해야한다.
내 블루프린트 세팅에서 [인터페이스] - [추가] 버튼을 누르면 추가할 수 있다.
그런 다음 On List Item Object Set 이벤트를 그래프에 추가한다. 이 함수는 ListView의 인자로 추가될 때 호출되는 이벤트이다.
매개변수로 넘어온 List Item Object를 BP_ClearTime으로 변환하고 텍스트를 세팅한다.
BP_ClearTimesWidget에서는 Construct이벤트가 호출될 때 게임모드를 가져오고 User Clear Times 변수의 갯수만큼 BP_ClearTime 위젯을 생성한다. 그리고 ListView에 AddItem 함수를 이용하여 add 하는데 이 때 BP_ClearTime에 인터페이스를 추가하지 않았다면 Add 되지 않는다.
또한 AddItem 함수가 호출될 때 On List Item Object Set 이벤트가 호출된다. 즉, AddItem의 매개변수인 Item이 On List Item Object Set 이벤트의 매개변수인 List Item Object로 넘어오게 된다.
정상적으로 5개의 시간들이 나오는 것을 볼 수 있다.
참조
'[Unreal4] > 간단지뢰찾기 게임 만들기' 카테고리의 다른 글
[UE4 지뢰찾기] 재시작 UI 추가 (0) | 2022.12.15 |
---|---|
[UE4 지뢰찾기] 키 입력 처리하기 (0) | 2022.12.12 |
[UE4 지뢰찾기] 타일의 머테리얼 세팅하기 (0) | 2022.11.30 |
[UE4 지뢰찾기] 지뢰 매설하기 (0) | 2022.11.30 |
[UE4 지뢰찾기] 타일을 관리하는 Board(판) 만들기 (0) | 2022.11.16 |