Notice
Recent Posts
Recent Comments
Link
스토리지
[4.21] Persistent Data Path에 기반한 데이터 읽기/쓰기 본문
- Persistent Data Path는 영구 데이터 디렉토리에 대한 경로를 포함한다.
종류 | 특징 | 저장경로 |
Data Path | 해당 디바이스의 프로젝트 폴더를 기반 이걸 기반으로 코드짜면 빌드 후 리소스 안뜸 |
UnityEditor : <path to project folder>/Assets |
Persistent Data Path | OS마다 고유의 저장공간 OS에 신경쓰지 않고 저장할 수 있음 |
Window : %userprofile%\AppData\Local\Packages\<productname>\ |
- 이러한 DataPath를 사용해서 데이터를 읽고 저장할 수 있다.
- 옵션과 같은 간단한 정보들은 이것들을 통해서 저장을해도 되지만 유저의 캐릭터 정보와 같은 중요한 정보는 클라이언트 내에서 저장하지 않고 서버통신을 통해 서버로 전달해서 저장을 하게 되므로 이 방법은 사용하지 않는 것이 좋다.
DataManager.cs // 전의 게시글과 데이터 불러오는 방식이 달라졌고 신규유저, 기본유저를 구분한다.
public void LoadDatas()
{
var path = string.Format("{0}/game_info.json", Application.persistentDataPath);
if (File.Exists(path))
{
this.GetStageDatas();
}
else
{
CreateNewData();
LoadDatas();
}
}
public void CreateNewData()
{
GameInfo gameInfo = new GameInfo();
for (int i = 0; i < this.lobby.maxStage; i++)
{
StageInfo stage = new StageInfo(i + 1, 0, StageInfo.eState.Lock);
gameInfo.stages.Add(stage);
}
var data = JsonConvert.SerializeObject(gameInfo);
var path = string.Format("{0}/game_info.json", Application.persistentDataPath);
File.WriteAllText(path, data);
}
private void GetStageDatas()
{
var path = string.Format("{0}/game_info.json", Application.persistentDataPath);
var data = File.ReadAllText(path);
var arr = JsonConvert.DeserializeObject<GameInfo>(data);
var tmpArr = arr.stages;
foreach (var i in tmpArr)
{
this.stageArr.Add(i.stageNo, i);
}
}
- 새로운 데이터를 만들고 로드되는 데이터는 GameInfo이기 때문에 전처럼 StageInfo[]형태로 받으면 안된다.
- 새로운 데이터를 만들때는 모든 스테이지를 Lock하는 형식으로 만들었다.
'Unity > 유니티 기본' 카테고리의 다른 글
[4.22] UI Animation (0) | 2021.04.22 |
---|---|
[4.21] Json파일에서 읽은 미션을 스테이지에 적용 (0) | 2021.04.21 |
[4.21] 게임데이터를 바탕으로 스테이지 씬 만들기 (0) | 2021.04.21 |
[4.20] Atlas (0) | 2021.04.20 |
[4.20] 아이템 습득 후 인벤토리에 표시 (0) | 2021.04.20 |
Comments