본문 바로가기

C#/Unity

[Unity] JsonUtility 사용하기

Unity 5.3 버전에서의 변경 사항 중에는 JSON API의 추가가 포함되어 있습니다. (http://blogs.unity3d.com/kr/2015/12/08/unity-5-3-all-new-features-and-more-platforms/)

이전 버전의 유니티에서는 JSON을 사용하려면 외부 라이브러리를 사용하여야 했는데,
각각의 JSON 라이브러리는 iOS/IL2CPP와 호환이 좋지 않은 것들도 있었으며, 게임에 추가한 외부 플러그인에서 JSON 라이브러리를 사용하는 경우도 있어 실제 게임 앱은 하나인데 그 안에 JSON 라이브러리만 2~3종류가 들어가있는 경우도 종종 있었습니다. 

유니티에서는 아마 이러한 문제점들을 파악하고 이를 위한 해결책으로 Unity 자체적으로 JSON 라이브러리를 제공하게 된 것 같습니다.


유니티의 새로운 API인 Json Utility는 매우 쓰기 쉽고 기본적인 기능만 제공하지만 게임에서 쓰기에는 기능이 충분합니다. 여기서는 간단한 JsonUtility의 사용법들을 알아보도록 하겠습니다.

  
기본적인 데이터를 Json 으로 변경하는 코드입니다.
이렇게 게임에서 사용하는 세이브 데이터 등을 Json으로 저장할 수 있습니다.
주의할점은 public field만 변환됩니다. public property는 변환되지 않습니다.

  
반대로 Json으로부터 오브젝트를 만드는 코드입니다.
제너릭으로 오브젝트의 타입을 지정합니다. Dictionary<string, object> 타입은 동작하지 않는 것 처럼 보입니다.

  
Json으로부터 이미 있는 오브젝트를 업데이트하는 코드입니다. 레벨이 원래 5인 오브젝트를, FromJsonOverride 메소드를 이용해 레벨을 99로 Override 합니다.