2023. 7. 5. 17:58ㆍ유니티/기능
Json 저장 방식에 추가로 알아보던 중 어느 한 분의 글을 보았습니다.
원문 : https://velog.io/@kohyeonseo1006/Unity-Dictionary를-Json-데이터로-파싱하기
(Unity) Dictionary를 Json 데이터로 파싱하기!
Dictionary를 Json 데이터로 파싱하기 놀랍게도 Dictionary형식은 Json 데이터로 파싱이 안된다!! 그렇기에 한번 데이터를 후처리 후 파싱을 시켜야한다. 데이터를 Dictionary로 저장 후 JsonUtility로 ToJson하
velog.io
내용을 요약하면 다음과 같습니다.
1. JsonUtility 는 Dictionary를 파싱할 수 없다.
2. Dictionary 를 파싱하기 위해서는 따로 후처리를 해야한다.
사실 본 직후에는 후처리를 한다는게 이해가 안가더군요.
후처리라 하기에는 그저 클래스 데이터를 복사하고 옮겨 담은 뒤
Json 으로 변환 한 것 뿐이니 말이죠.
직접 실행해본 뒤에는 정말로 그게 다라는 것을 깨달았습니다.
우선 원문 코드 내용을 먼저 실험해 보았습니다.
(코드에 결과가 스포 되있는 건 안비밀)
원문에서 작성한 코드 사용 시 데이터가 파싱되는 것을 볼 수 있습니다.
반면, JsonUtility 를 사용한 코드는 제대로 출력이 안되고 있습니다.
이걸 응용해 제가 원하는 게임에서 사용할 코드를 작성해보겠습니다.
우선 커스텀 클래스를 만들었습니다.
덤으로 각종 자료형의 저장 확인을 위해 추가로 변수도 종류별로 넣었습니다.
클래스 변수 중 마지막에 있는 dic 변수는 비교 확인을 위해 넣었습니다.
세이브는 이번에 새로 만든 코드를 사용해 보았습니다.
https://dyunace.tistory.com/29
Unity - 세이브 로드 매니저 (개인용)
이번에 새로 개인용 라이브러리 패키지를 만들고 있는 중입니다. 그 중에서 하나인 세이브 로드 매니저를 공유하려고 합니다. 이거 집어넣고, 한 줄만 작성해도 세이브랑 로드가 되니까 편하더
dyunace.tistory.com
이제 코드를 실행시켜보겠습니다.
파일을 확인해 보면 다음과 같습니다.
리스트는 원래부터 잘 되었고, 직접 만든 TestSaveDic 타입 또한 제대로 적용이 되었습니다.
비교를 위해 넣었던 Dictionary는 역시 저장되지 않았습니다.
테스트 세이브 딕셔너리가 기존의 Dictionary 처럼 여러 데이터가 들어가는지
확인해 보았습니다.
결론을 내리면
" 커스텀 클래스로 Dictionary 형태를 만들어서 사용하면 쓸 수 있다. "
이렇게 되겠네요.
'유니티 > 기능' 카테고리의 다른 글
Unity - 프로젝트 빌드 시 저장 경로 (0) | 2023.05.12 |
---|---|
오브젝트 풀 (Object Pool) (0) | 2023.04.27 |
Unity - json 한글 깨짐, 인코딩 (0) | 2023.03.25 |
Unity - IOException 오류, 유니티 파일 접근 오류 (0) | 2023.03.25 |
Unity - 폴더, 파일 탐색 및 생성 (0) | 2023.03.25 |