본문 바로가기
유니티 Unity/유니티 기능 구현

[유니티] 초보자를 위한 제이슨을 사용하는 방법

by TODAYCODE 2022. 1. 15.
반응형

해당 글은 Json을 처음 사용해보는 초보자를 위한 글임을 밝힙니다.

해당 본문의 내용은 아래의 유튜브로도 볼 수 있습니다.

 

유니티에서 Json을 사용할 때 어렵게 생각하는 사람들이 많다.

아무래도 비전공자가 학원이나 국비교육같은 곳에서 코딩자체를 유니티로 입문하는 사람들이 꽤 많다보니까

Json에 대한 사전지식이 없기 때문이라고 생각한다.

Json을 이론적으로 자세히 모른다고 하더라도 쓰느 방식만 알면 다양하게 응용이 가능하므로 알아두면 굉장히 도움이 많이 되고,

실무에서는 기본적으로 사용되기 때문에 꼭 알아야하는 스킬이다.

 

Json을 설명할 때마다 항상 택배의 절차에 비유해서 설명하곤 한다.

어떤 물건을 택배에 포장해서 보내고, 받은 사람이 택배를 풀어서 물건을 받는 형태가

Json의 과정과 동일하다고 생각하면 된다.

근데 그 물건이 분해랑 조립이 가능해서,

택배를 보낼때는 분해하고, 받은 사람은 다시 조립을 한다고 생각하면 된다.

제이슨을 잘 모르겠다면 일단은 그냥 이정도 느낌으로 생각해주면 될 것이다.

 


1. 코드를 Json으로 만드는 방법

위에서 택배상자를 예로 들었던 것을 생각해보면, 우리가 해야할 첫번째는 물건을 택배상자에 포장하는 것이다.

여기서 중요한 점은, 우리가 사용하는 물건은 무조건 클래스로 되어있어야한다.

" 제이슨으로 만들어줄 코드는 클래스 형태여야함을 기억 "해야 한다.

예를 들면 이런식이다.

Player의 정보와 관련된 Data라는 클래스를 하나 만들었고,

Data 클래스 내부에 저장하고 싶은 정보에 해당하는 변수들을 만들어준다.

자신이 Json으로 변환하고 싶은 정보 아무거나 변수처럼 적어주면 된다.

이렇게 만들었다면, 기본적인 준비는 끝났고 본래의 스크립트에서 데이터를 넣어주면 된다.

 

Data 클래스 형식의 player를 하나 생성하고 각각에 맞는 정보를 입력해줬다.

위에처럼 하지 않고, player.nickname = "오늘코딩"; 이런식으로 Start 쪽에서 정보를 넣어줘도 되고,

기존에 넣었던 정보를 이런식으로 수정할 수도 있다는 것을 참고하자.

 

여기까지 진행했다면, 우리가 제이슨으로 보낼 정보(물건)이 완성되었다는 뜻이다.

이제 제이슨으로 포장만 해주면 되는데 이건 유니티에서 기본적으로 지원하는 기능이라서 굉장히 쉽다.

JsonUtility를 써주면 다양한 메소드들이 나오는데 일단 Json을 만드는 거기 때문에 ToJson을 선택해주면 된다.

그리고 매개변수로는 Json으로 만들어줄 오브젝트 아무거나 넣어주면 된다.

우리는 방금전에 생성했던 player를 넣어주면 된다.

그리고 제이슨은 항상 문자열형태로 존재하기 때문에 string으로 받아주면 된다.

스트링형태라는 것은 문자이기 때문에 출력해볼 수 있다는 소리고, print나 debug를 통해서 콘솔창에서 확인할 수 있다.

실제로 해보면 이처럼 입력했던 정보들이 문자로 출력되는 것을 볼 수 있다.

 

그렇다는 소리는 우리가 만들었던 정보(클래스-코드)가 제대로 Json으로 변환되었다는 의미이다.

이제 이 Json을 다시 사용해서 원래의 코드로 되돌리는 작업을 해보자.

(이렇게 생성된 Json을 외부에 저장하거나 어딘가로 보낸다면 저장/불러오기, 통신의 기능이 되는 것)

 


2. 제이슨을 코드로 만드는 방법

이때도 똑같이 JsonUtility를 사용해주면 된다.

이번에는 제이슨으로부터 무언가를 만드는 것이기 때문에 JsonUtility.FromJson을 사용해주면 된다.

다소 차이점이 존재하는데, 무언가를 만들지를 <꺽쇠괄호> 안에다가 적어주어야한다.

우리는 Data클래스로 Json을 만들었었고 다시 이 Json을 Data클래스로 복구할 것이기 때문에

꺽쇠괄호안에다가 Data를 적어주면 된다.

본인이 불러올 클래스의 이름을 적어주면 되는 것.

매개변수로는 제이슨을 넣어주면 되는데 우리는 방금전에 위에서 받아놨던 jsonData를 넣어주면 된다.

당연히 Data클래스로 변환하는 것이기 때문에 이걸 받아주려면 Data 형식으로 받아줘야하고,

player2라는걸 새로 만들어서 받아줬다.

 

그러면 새로는 Data 형태인 player2가 생성되었다.

그런데 정보는 위에서 만들었던 player의 정보를 가져와서 덮어씌웠기 때문에

player2는 player와 완전히 동일해졌다고 생각하면 된다.

즉, player로 저장했던 정보를 다시 가져와서 player2에 그대로 넣어주면서

마치 저장했던 정보를 다시 불러오기한 것처럼 보이게 된 것이다.

정말 불러오기가 된 것인지 확인하기 위해서 정보를 하나씩 프린트를 찍어보게 된다면,

이렇게 처음에 입력했던 정보들이 그대로 입력되어있는 것을 확인할 수 있다.

이런식으로 간단하게 유니티에서 Json을 사용해서 정보를 저장하고 다시 불러오는 것을 해보았다.

 


제이슨을 제대로 알아두면 매우 다양한 방면으로 활용이 가능하기 때문에 꼭 숙달해야하는 기술이다.

 

그리고 실제 사용은 위의 내용들보다 훨씬 더 복잡한 방식으로 사용하지만,

기본적인 틀은 동일하므로 이번 기회에 확실하게 알아둔다면 도움이 될 것이다.

 

다음에는 이렇게 Json을 사용해서 실제로 게임상에서 슬롯에 데이터를 저장하고 나중에 다시 불러와서 이어하는 등의

기능을 구현하는 방법을 적어보도록 하겠다.

 

 

반응형

댓글