Json 저장과 파일 입출력
며칠간 하나의 시스템을 개발하다 보면 일지가 너무 길어지고 정리하기 어려워진다
따라서 조금 분리하기로 결정!
맵데이터를 저장하고 불러올 것이다
JsonUtility와 NewtonJson
Json을 처음 사용해보면서 다양한 라이브러리 중에 뭘 사용할지 선택해야했다
선택하기 위해선 차이점들을 알아야했는데 자세한 설명이 되어있는 글은 찾기 어렵더라
찾아본 내용을 정리하자면
1. JsonUtility
- 유니티5.3 이상부터 지원하고있다
- 가장 간단한 기능들만 존재한다
- 배열, 리스트 등의 형식을 변환할 수 없다
하지만 Wrapping Class (class, struct) 내부에 정의된 클래스, 배열, 리스트 등의 형식은 Json으로 변환해준다
리스트, 딕셔너리를 직렬화하고 싶은 경우 별도 class를 만들어주어야 한다
- 사용자 정의 클래스 리스트를 Json으로 변환하기 위해선 두가지 주의점이 있다
1. [System.Serializable] 필드로 설정할 것
2. Wrapping Class 내부 변수에 프로퍼티를 사용하지 말 것 (변환되지 않음)
https://docs.unity3d.com/kr/2019.4/Manual/JSONSerialization.html
JSON 직렬화 - Unity 매뉴얼
JsonUtility 클래스를 사용하여 Unity 오브젝트를 JSON 포맷으로 상호 전환할 수 있습니다. 예를 들어 JSON 직렬화를 사용하여 웹 서비스와 상호작용하거나, 데이터를 텍스트 기반 포맷으로 쉽게 패킹
docs.unity3d.com
2. Json.NET
- 외부 Json 라이브러리
- 다양한 기능을 지원한다
- Documentation을 보니 딕셔너리 등을 바로 직렬화할 수 있나보다
https://www.newtonsoft.com/json/help/html/SerializeDictionary.htm
Tilemap Save & Load
타일맵에서 저장된 Json파일을 통해 로드하는 기능과
파일 이름을 지정하고 Json파일로 저장하는 기능을 제작해보자
1. 타일의 Name, Position을 가지고 있는 Class 생성
2. 타일들의 정보를 가지고 있는 Class 생성
3. Save시 현재 타일맵에 생성되어 있는 타일들의 정보를 저장 => Json => 파일 생성
4. Load시 타일맵이 없다면 타일맵 생성, 타일맵에 저장된 위치에 해당 이름을 가진 타일 깔기
현재는 이 과정을 통해 타일맵 Save, Load 기능이 돌아가고 있다
결론
URL에디터로 만든다고 정말 많은 레퍼런스를 참고하고.. 삽질도 했지만
덕분에 많은걸 배웠다커스텀 에디터 관련해선 한번 더 자료정리를 하고싶다
'프로젝트 > Color Lim 개발일지' 카테고리의 다른 글
2021-07-09 개발일지 (0) | 2021.07.10 |
---|---|
2021-07-05~07 개발일지 (0) | 2021.07.08 |
2021-06-29~02 개발일지 (0) | 2021.06.30 |
2021-06-21 개발일지 (0) | 2021.06.22 |
2021-06-18~20 개발일지 (0) | 2021.06.19 |