Notice
Recent Posts
Recent Comments
Link
반응형
공부혜옹
[Unity] JSON Serialize 본문
Json
사용 라이브러리
JSON .NET For Unity | 입출력 관리 | Unity Asset Store
- 사용이유: JsonUtility 사용 중 serialize시 특정 자료구조에 대해서 공백으로 직렬화 하는 이슈를 발견함 (list, dictionary 등...) JsonUtility 자체가 json의 모든기능을 담고 있지 않기 때문으로 판단하여 라이브러리 변경
- 특이사항: unity 특정 버전 (2021 이전버전) 에선 해당 라이브러리가 이미 내장되어있어 asset import 없이도 사용 가능하다
데이터 타입정의
[System.Serializable]
public class SceneInfo
{
public string SceneName;
public int num;
}
[System.Serializable]
public class MemberInfo
{
public string name;
public int num;
}
데이터를 저장할 객체의 타입과 변수명을 미리 정의해놓아야한다
Json 데이터 받아오기
public T GetJsonData<T>()
{
string path = Application.dataPath + "/MemberInfo.json";
string jsonData = File.ReadAllText(path);
T myObject = JsonConvert.DeserializeObject<T>(jsonData);
return myObject;
}
현재 연결할 서버주소가 없기때문에 Application.dataPath로 실제 파일경로를 가져와 읽었다. (향후 바뀔 예정)
멤버 정보, 씬정보등 여러 타입의 객체들을 로드해야할것으로 예상하여 제네릭타입을 사용해 구현하였다
Json 데이터 수정 & 저장
public void UpdateJsonData(MemberInfo _myObject)
{
string updatedData = JsonConvert.SerializeObject(_myObject);
SaveJsonData (updatedData);
}
public void SaveJsonData(string _json)
{
string path = Application.dataPath + "/MemberInfo.json";
try
{
File.WriteAllText(path, _json);
}
catch (Exception e)
{
Debug.Log(e);
}
}
생성한 오브젝트의 변수를 수정하고 해당 오브젝트를 시리얼라이즈시켜 기존 파일에 덮어 씌우는 방식이다
반응형
'공부합시다 > Unity' 카테고리의 다른 글
[Unity] SoundManager - 배경음 플레이하기 (0) | 2022.01.18 |
---|---|
[Unity] ObjectPool을 이용한 object 관리 (2) | 2022.01.16 |
Comments