dataPath 와 persistentDataPath 방식이있음
-----
먼저 신규 유저 데이터 저장하는 방법
테스트 씬을 만들어 저장 버튼과 로드 버튼을 만들어 준다.
SaveTest 빈 오브젝트를 만들어주고, SaveTest 스크립터를 만들어서 넣어준다..
그리고 빈 버튼을 받아서 테스트를 해준다 .
로그가 잘 뜨는지
MonoBehaviour를 상속받지 않는 스크립터를 만들어준다.
먼저 StageInfo 는 UIStage에서 필요한 데이터를 가지고있는 Info 스크립터이다.
GameInfo 는 StageInfo의 배열을 만들어서 넘겨주는 역할을 한다.
-----
persistentDataPath 방식으로 데이터를 저장을 할 것이다.
private void Start()
{
var path = string.Format("{0}/geme_info.json", Application.persistentDataPath);
if (File.Exists(path))
{ //파일이 존재한다면
}
else { //파일이 존재하지 않으면
//신규유저
this.gameInfo = new GameInfo();
for (int i = 0; i < this.maxStage; i++) {
var state = 2; // 기본적으로 lock 상태로 만들어준다.
if (i == 0) {
state = 1;
}
var stageInfo = new StageInfo(i + 1, state);
this.gameInfo.stageInfos.Add(stageInfo);
}
var json = JsonConvert.SerializeObject(this.gameInfo);
File.WriteAllText(path, json);
}
----
var path = string.Format("{0}/geme_info.json", Application.persistentDataPath);
먼저 path 변수에 현재 persistentDataPath 경로를 Format 으로 구워준다.
if (File.Exists(path))
{ //파일이 존재한다면
}
존재한다면 기존 유저이기 때문에 데이터를 불러오면 된다. // 신규 유저 이후 다룰것이다.
else { //파일이 존재하지 않으면
//신규유저
this.gameInfo = new GameInfo();
만약 파일이 존재하지 않는다면, gameInfo 변수에 새로운 게임 인포 객체를 만들어준다.
담기 위해서 라고 생각하면 쉽다.
for (int i = 0; i < this.maxStage; i++) {
var state = 2; // 기본적으로 lock 상태로 만들어준다.
if (i == 0) {
state = 1;
}
var stageInfo = new StageInfo(i + 1, state);
this.gameInfo.stageInfos.Add(stageInfo);
}
최대 갯수 만큼 for를 돌려주고,
var state = 2 // 기본적으로 상태를 (이넘 타입) 2(lock)으로 하기 위해서 지정해준것
i == 0 //이면 제일 첫번째 인덱스에는 1(doing) 으로 만들어준다.
var stageInfo = new StageInfo(i + 1, state);
stageInfo 를 넣어준다.
이 부분으로 데이터가 들어가서 하나의 stageInfo가 인덱스 하나로 들어간다.
this.gameInfo.stageInfos.Add(stageInfo);
그리고 gameInfo // stageInfos(배열) 에 위에 stageInfo의 대한 정보를 넣어준다.
----
여기가지 데이터를 만드는 부분
----
이제부터 데이터를 직렬화하여 넣는 부분이다.
var json = JsonConvert.SerializeObject(this.gameInfo);
File.WriteAllText(path, json);
위에서 만든 배열 (gameInfo) 를 직렬화를 한 json 변수를 만들고
File.WriteAllText(path//경로 , json//파일); 를 사용하여서 저장을 해준다.
======
기존 유저 데이터 불러오기
if (File.Exists(path))
{ //파일이 존재한다면
var json = File.ReadAllText(path);
this.gameInfo = JsonConvert.DeserializeObject<GameInfo>(json);
}
만약 그 경로에 파일이 존재하면
var json = File.ReadAllText(path);
var json = File.ReadAllText(path); // 경로에 있는 파일을 리드올텍스트로 모두 읽어옵니다.
this.gameInfo = JsonConvert.DeserializeObject<GameInfo>(json);
그리고 역직렬화<GameInfo>(json); // GameInfo 형식으로 파일을 역직렬화해줍니다.
'Unity > UIUX프로그래밍' 카테고리의 다른 글
0421_ TestUIStage // 데이터 가져와서 사용하고 팝업에 띄우기 (0) | 2021.04.21 |
---|---|
0421_ UIStage 페이지 넘기기 (1) | 2021.04.21 |
0421_ UIStage (0) | 2021.04.21 |
0420_아이템 먹기 + 인벤토리 연동 (0) | 2021.04.20 |
0420_아이템 데이터 // 데이터매니저 싱글턴 사용하기 (0) | 2021.04.20 |