유니티에서 Json 사용하기 1
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다.
유니티에서 JSON 사용하기 – 문자열, 숫자 로딩
게임을 만들다 보면, 필히 데이터를 저장해야 하는 순간이 옵니다.
게임 유저의 점수를 기록한다 던지, 해당 유저가 결제한 항목들을 저장해 둔다던지 데이터를 파일로 저장하고 로드하는 해야 경우가 많습니다.
유니티에는 PlayerPref라는 쉬운 방법이 있긴 하지만, PlayerPref로는 덩치가 큰 데이터의 관리는 사실 어렵습니다. 물론 방법이 없는 것은 아닙니다.
지난 번에 강좌에 올렸던 http://cafe.naver.com/unityhub/242 글을 잘 보시면, PlayerPref에 배열 정보도 넣을 수 있는 방법도 있고 이 방법도 꾀 괜찮습니다.
하지만 좀 더 직관적으로 해당 데이터도 사람이 읽을 수 있고 따로 파일로 관리도 할 수 있도록 하기 위해서는 다른 방법이 필요합니다.
가장 많이 사용되는 방법은 SQLite, XML, JSON 이렇게 세가지 정도로 볼 수 있겠네요.
이 중에서 JSON 데이터를 읽어오는 예제를 진행해 보겠습니다.
JSON 데이터를 읽기 위해서는 Parser가 필요한데, C# 에서 사용할 수 있는 Parser는 많습니다.
그 중에서 사용이 편해보이는 LitJson 을 이용해서 예제를 진행해 보겠습니다.
LitJson 의 dll 파일은 http://lbv.github.io/litjson/ 이 곳에 가면 받을 수 있고, 여기에 간단한 사용방법도 설명이 되어 있습니다.
다운로드를 받으시고, 아래 그림과 같이 Plugins 폴더에 넣어 줍니다.
이렇게 넣어주면 사용할 준비는 끝 납니다.
간단한 JSON 데이터를 읽어 보겠습니다.
{ "name":"Ronnie", "score":100 }
메모장에 위의 내용을 작성을 한뒤에 Json.txt라고 저장을 하고 이 텍스트 파일을 프로젝트 폴더에 넣어 둡니다.
그리고 이 Json 데이터는 아래 API를 이용해서 읽어올 수 있습니다.
LitJson.JsonMapper.ToObject(string jsonData);
데이터를 읽기 위해서 아래와 같이 스크립트를 작성합니다.
using UnityEngine; using System.Collections; public class LoadTest : MonoBehaviour { public TextAsset jsonData; void OnGUI() { if (GUILayout.Button("Load")) { LitJson.JsonData getData = LitJson.JsonMapper.ToObject(jsonData.text); string name = getData["name"].ToString(); int score = int.parse(getData["score"].ToString()); Debug.Log("Name: " + name + " Score: " + score); } } }
LitJson.JsonMapper.ToObject(string jsonData); 함수는 LitJson.JsonData 형식을 반환 하는 데,
이렇게 반환된 값에 보시는 데로 [“키 값”] 을 넣어주면 해당 데이터를 받아올 수 있습니다.
다시 위에 Json 데이터를 살펴보시면 “name”에는 “Ronnie”라는 문자열 데이터가 있었고, “score”에는 100이라는 int값이 저장되어 있었습니다.
Json 데이터를 읽는 데 편하게 하기 위해서 프로젝트 안에 Json.txt라고 저장을 해두고 아래와 같이 드래그해서 대입해 주었습니다.
그리고 실행을 한 뒤에 Game View화면에서 “Load”버튼을 눌러주면 아래와 같이 결과가 잘 나오는 것을 확인할 수 있습니다.
JSON 은 기본적으로 number, string, boolean 등의 기본 값들과, 오브젝트도 저장이 가능하고, 배열도 저장이 가능합니다.
혹시 JSON의 문법을 잘 모르시는 분들은 구글에 검색 해보면 잘 나오니 확인 해보시구요.
다음 강좌에 이어서 배열을 읽어오는 부분을 해보겠습니다.
내용 끝까지 읽어주셔서 감사합니다.
배너 클릭은 저에게 많은 힘이 됩니다.
감사합니다 🙂
덕분에 json 파일 읽는걸 간단히 실행해 볼수 있었는데요, 혹시 반대로 저장 및 값 수정 하는 방법은 알수 없나요??
가령 지금과 같은 상태에서. 가령 json.txt 에 있는 score 100값을 변경 시켜서 저장하는 방법을 알수있을까요…
감사합니다^^
댓글 감사합니다.
종종 들러주세요~