스테이지 저장 기능 구현

이준영·2025년 11월 18일

스테이지 저장 기능

  • Json으로 저장하는 두 가지 방법에 대해서 학습.
  • 두 가지 중 Newtonsoft Json으로 저장하기로 결정.

Newtonsoft Json 사용한 이유

  • 스테이지 저장에 필요한 데이터는
  1. 타겟 컬러(열거형)
  2. 보드의 색(2차원 배열 열거형)
  3. 시도 횟수(integer 형)
  • 저장해야 하는 데이터 중, 2차원 배열이 존재.
  • JsonUtility는 다차원 배열 직렬화가 힘듬.
	ex)
	int[][] test1;	//가능
	int[,] test2;	//불가능
  • 또한 JsonUtility의 장점은 MonoBehaviour를 상속받은 클래스를 직렬화 가능함.
  • 하지만 내가 저장하려는 데이터는 다양한 클래스에 따로 저장되어 있음.
Board
TargetColor

요약

  1. 2차원 배열을 저장하기 위해서
  2. JsonUtility의 장점을 살리지 못해서

코드

StageData
  • 스테이지에 필요한 정보들이 모여있는 클래스이다.

StageSaveLoader
  • List로 스테이지를 조회할 수 있게 하였다.
  • 만약 List가 null인 상태에서 호출되면 LoadStage()가 먼저 작동하도록 프로퍼티를 작성해 주었다.
  • SaveStage는 List에 스테이지를 추가하고, 직렬화와 파일에 덮어쓰기를 하도록 작성.
  • LoadStage는 파일을 읽고, 역직렬화 한다. (만약 저장된 데이터가 없다면 리스트 생성.)
  • 테스트를 위해서 경로는 dataPath를 사용.

List를 사용한 이유

  • 만약 Stage1.Json, Stage2.Json 여러 개로 나뉘어 저장한다면, string형태로 스테이지를 조회해야 함.
  • -> 코드가 복잡해지고, 오류 발생률이 증가 할 수 있음.

  • 하나의 Json에 모든 데이터를 저장하고 자료구조 형태로 관리.
  • -> 오류가 적어지고, 코드로 데이터 관리가 용이.

Test

TestCode
Test
  • 잘 저장된다.
  • 이 상태로 한 번 더 작동하면,
Test2
  • 두 번째 데이터까지 잘 저장된다.
profile
게임 개발자가 되기 위해서 공부하는 중입니다.

0개의 댓글