스테이지 저장 기능
- Json으로 저장하는 두 가지 방법에 대해서 학습.
- 두 가지 중 Newtonsoft Json으로 저장하기로 결정.
Newtonsoft Json 사용한 이유
- 타겟 컬러(열거형)
- 보드의 색(2차원 배열 열거형)
- 시도 횟수(integer 형)
- 저장해야 하는 데이터 중, 2차원 배열이 존재.
- JsonUtility는 다차원 배열 직렬화가 힘듬.
ex)
int[][] test1; //가능
int[,] test2; //불가능
- 또한 JsonUtility의 장점은 MonoBehaviour를 상속받은 클래스를 직렬화 가능함.
- 하지만 내가 저장하려는 데이터는 다양한 클래스에 따로 저장되어 있음.
| Board |
|---|
 |
| TargetColor |
|---|
 |
요약
- 2차원 배열을 저장하기 위해서
- JsonUtility의 장점을 살리지 못해서
코드
| StageData |
|---|
 |
- 스테이지에 필요한 정보들이 모여있는 클래스이다.
- List로 스테이지를 조회할 수 있게 하였다.
- 만약 List가 null인 상태에서 호출되면 LoadStage()가 먼저 작동하도록 프로퍼티를 작성해 주었다.
- SaveStage는 List에 스테이지를 추가하고, 직렬화와 파일에 덮어쓰기를 하도록 작성.
- LoadStage는 파일을 읽고, 역직렬화 한다. (만약 저장된 데이터가 없다면 리스트 생성.)
- 테스트를 위해서 경로는 dataPath를 사용.
List를 사용한 이유
- 만약 Stage1.Json, Stage2.Json 여러 개로 나뉘어 저장한다면, string형태로 스테이지를 조회해야 함.
- -> 코드가 복잡해지고, 오류 발생률이 증가 할 수 있음.
- 하나의 Json에 모든 데이터를 저장하고 자료구조 형태로 관리.
- -> 오류가 적어지고, 코드로 데이터 관리가 용이.
Test
| TestCode |
|---|
 |
| Test |
|---|
 |
- 잘 저장된다.
- 이 상태로 한 번 더 작동하면,
| Test2 |
|---|
 |